#DeltaSCR Posted January 1, 2019 Share Posted January 1, 2019 Olá, gostaria de saber o que eu devo usar pra que, quando um veiculo chegue á um determinado HP, seja executado o resto do codigo Link to comment
#DeltaSCR Posted January 1, 2019 Author Share Posted January 1, 2019 6 minutes ago, OverKILL said: Olá, OnVehicleDamage function displayVehicleLoss(loss) -- Aqui no lugar de "loss" eu colocaria o HP? local thePlayer = getVehicleOccupant(source) if(thePlayer) then -- Check there is a player in the vehicle outputChatBox("Your vehicle just lost " .. tonumber(loss) .. " health.", thePlayer) -- Display the message end end addEventHandler("onVehicleDamage", root, displayVehicleLoss) Link to comment
Jonas^ Posted January 1, 2019 Share Posted January 1, 2019 O que você esta tentando fazer na real? Link to comment
#DeltaSCR Posted January 1, 2019 Author Share Posted January 1, 2019 Just now, OverKILL said: O que você esta tentando fazer na real? Tipo assim, quando o veiculo de um player chegar a 255 de HP, o veiculo vai desligar, congelar e blindar (um sistema de mecanico) Link to comment
Jonas^ Posted January 1, 2019 Share Posted January 1, 2019 (edited) Tente desta forma: function repararCarro (thePlayer) local playerInCar = getPedOccupiedVehicle (thePlayer) -- Pega o jogador que esta dentro do carro local reward = 800 -- Recompensa if getElementHealth (playerInCar) < 401 then -- Se o valor de health do veículo for menor que 400 então: fixVehicle(playerInCar) -- Repara o carro givePlayerMoney (thePlayer, reward) -- Seta a recompensa na conta do jogador. outputChatBox( "Você reparou o veículo com sucesso e ganhou +"..reward..".", thePlayer) -- Envia a mensagem avisando o jogador que ocorreu tudo bem else -- Se acontecer algo errado outputChatBox( "O HP desse veículo é maior que 400 então não foi possível reparar.", thePlayer) -- Avisa o mecanico sobre isso end end addCommandHandler( "reparar", repararCarro) Edited January 1, 2019 by OverKILL Link to comment
#DeltaSCR Posted January 1, 2019 Author Share Posted January 1, 2019 Just now, OverKILL said: Tente desta forma: function repararCarro (thePlayer) local playerInCar = getPedOccupiedVehicle (thePlayer) -- Pega o jogador que esta dentro do carro local reward = 800 -- Recompensa if getElementHealth (playerInCar) < 401 then -- Se o valor de health do veículo for menos que 400 então: fixVehicle(playerInCar) -- Repara o carro givePlayerMoney (thePlayer, reward) -- Seta a recompensa na conta do jogador. outputChatBox( "Você reparou o veículo com sucesso e ganhou +"..reward..".", thePlayer) -- Envia a mensagem avisando o jogador que ocorreu tudo bem else -- Se acontecer algo errado outputChatBox( "O HP desse veículo é maior que 400 então não foi possível reparar.", thePlayer) -- Avisa o mecanico sobre isso end end addCommandHandler( "reparar", repararCarro) Vou tentar aqui 7 minutes ago, OverKILL said: Tente desta forma: function repararCarro (thePlayer) local playerInCar = getPedOccupiedVehicle (thePlayer) -- Pega o jogador que esta dentro do carro local reward = 800 -- Recompensa if getElementHealth (playerInCar) < 401 then -- Se o valor de health do veículo for menos que 400 então: fixVehicle(playerInCar) -- Repara o carro givePlayerMoney (thePlayer, reward) -- Seta a recompensa na conta do jogador. outputChatBox( "Você reparou o veículo com sucesso e ganhou +"..reward..".", thePlayer) -- Envia a mensagem avisando o jogador que ocorreu tudo bem else -- Se acontecer algo errado outputChatBox( "O HP desse veículo é maior que 400 então não foi possível reparar.", thePlayer) -- Avisa o mecanico sobre isso end end addCommandHandler( "reparar", repararCarro) Eu ainda estou sem entender a parte de quando o veiculo chegar a um determinado HP, acontecer tal coisa, pode me ajudar? Link to comment
Jonas^ Posted January 1, 2019 Share Posted January 1, 2019 Você testou o código? funcionou? Então isso é a base, você pode usar getElementHealth pra verificar o dano do veículo e quando ele atingir esse dano você faz tal ação, este código é um exemplo, não sei se funciona, se funcionou você pode usar como base, se tiver outra forma de fazer isso eu não sei te informar dai. Link to comment
#DeltaSCR Posted January 1, 2019 Author Share Posted January 1, 2019 Just now, OverKILL said: Você testou o código? funcionou? Então isso é a base, você pode usar getElementHealth pra verificar o dano do veículo e quando ele atingir esse dano você faz tal ação, este código é um exemplo, não sei se funciona, se funcionou você pode usar como base, se tiver outra forma de fazer isso eu não sei te informar dai. Ah entendi, eu estou tentando fazer um baseado nesta dai... Mas acho que não vai dar certo rs Link to comment
miiguelz Posted January 1, 2019 Share Posted January 1, 2019 Só uma pergunta contraditória. Este código é server-side ou client-side? Link to comment
Other Languages Moderators Lord Henry Posted January 1, 2019 Other Languages Moderators Share Posted January 1, 2019 (edited) Tá, vamos primeiramente entender a lógica do que você precisa fazer. O veículo bate em algo e perde HP. O evento que ativa toda vez que um veículo toma dano é o onVehicleDamage. Nesse evento, verifica quanto de HP o veículo possui com getElementHealth. Se o veículo estiver com menos de 250 de vida, então: Blinda o veículo e desliga o motor. Se o jogador usar algum comando pra ligar o motor, verifica a vida do veículo de novo. Se a vida do veículo ainda estiver com menos de 250, volta a desligar o motor. Se o jogador sair e entrar no veículo novamente, verifica a vida do veículo ao entrar no veículo com o evento onVehicleEnter. Se a vida do veículo ainda estiver com menos de 250, blinda o veículo e desliga o motor novamente. Se a vida do veículo em qualquer um dos casos acima for maior que 250, desblinda o veículo e permite que ligue o motor normalmente. Agora vamos programar isso, em partes. (server-side) function vehicleHPVerify (loss) -- loss é a quantidade de HP que o veículo perdeu nesta batida. Não é a vida que ele possui. local thePlayer = getVehicleController (source) -- thePlayer é o motorista do veículo. Pode ser nulo em casos onde o jogador saiu do veículo antes da batida, portanto deve-se verificar a existencia dele antes de usá-lo. if (getElementHealth (source) < 250) then -- Se o veículo tem menos de 250 de vida, então: setVehicleDamageProof (source, true) -- Blinda o veículo. setVehicleEngineState (source, false) -- Desliga o motor do veículo. if (thePlayer) then -- Se existe um motorista no veículo, então: outputChatBox ("Seu veículo quebrou o motor. Chame um mecânico.", thePlayer) -- Mostra essa mensagem ao jogador. end end end addEventHandler ("onVehicleDamage", root, vehicleHPVerify) -- Executa esse evento sempre que algum veículo tomar dano. function vehicleEngineDisable (thePlayer, seat, jacked) if (getElementHealth (source) < 250) then -- Se o veículo que o jogador entrou tem menos de 250 de vida, então: if (seat == 0) then -- Se o jogador entrou como motorista, então: setVehicleDamageProof (source, true) -- Blinda o veículo. setVehicleEngineState (source, false) -- Desliga o motor do veículo. end else -- Se o veículo não tem menos de 250 de vida, então: setVehicleDamageProof (source, false) -- Desblinda o veículo. Mesmo se o jogador não entrar como motorista. O motor liga sozinho ao entrar em um veículo, não precisa ligá-lo aqui. end end addEventHandler ("onVehicleEnter", root, vehicleEngineDisable) -- A função a seguir só deve ser usada caso você tenha um comando /motor pra ligar/desligar o motor do veículo. function antiVehicleEngine (cmd) if (cmd == "motor") then local theVehicle = getPlayerOccupiedVehicle (source) -- theVehicle é igual ao veículo que o jogador que executou o comando está. Será false se ele estiver a pé. if (theVehicle) then -- Se o jogador que executou o comando está em um veículo, então: if (getPedOccupiedVehicleSeat (source) == 0) then -- Se o jogador que executou o comando for o motorista, então: if (getElementHealth (theVehicle) < 250) then -- Se o veículo que o jogador está tem menos de 250 de vida, então: cancelEvent() -- Cancela o comando /motor. outputChatBox ("O motor falhou.", source) -- Manda essa mensagem ao jogador. setVehicleEngineState (theVehicle, false) -- Desliga o motor do veículo. end end end end end addEventHandler ("onPlayerCommand", root, antiVehicleEngine) -- Executa essa função quando alguém executar algum comando. (mandar mensagens no chat também chama essa função, pois o jogador na verdade está usando /say ao fazer isso) (não testado) Edited January 1, 2019 by Lord Henry 1 Link to comment
DNL291 Posted January 2, 2019 Share Posted January 2, 2019 (edited) E para evitar que o veículo exploda, que é o que ocorre quando a hp é inferior a 250, use: setElementHealth( vehicle, 250 ). Edited January 2, 2019 by DNL291 1 Link to comment
Other Languages Moderators Lord Henry Posted January 2, 2019 Other Languages Moderators Share Posted January 2, 2019 10 hours ago, DNL291 said: E para evitar que o veículo exploda, que é o que ocorre quando a hp é inferior a 250, use: setElementHealth( vehicle, 250 ). Normalmente o veículo não explode enquanto está blindado. Mesmo se estiver com menos do que 250 de vida. O motor vai ficar pegando fogo eternamente enquanto estiver blindado sem explodir. É claro que, ele vai explodir no instante que for desblindado se a vida estiver inferior a 250. Link to comment
DNL291 Posted January 2, 2019 Share Posted January 2, 2019 Sim, o veículo vai ficar sempre com o fogo no capô. Eu deixaria a HP em 250, fica muito esquisito o carro com o fogo, e também nos scripts de mecânico, o criador sempre deixa a hp em 250. Mas de qualquer forma, o @danblemes1 é quem vai escolher o que for do gosto dele. Link to comment
Other Languages Moderators Lord Henry Posted January 3, 2019 Other Languages Moderators Share Posted January 3, 2019 (edited) Sim, geralmente eles setam a vida em 250 pra fazer sair o fogo. Mas eu curto deixar o fogo pra parecer mais desesperador, kkkkkkkk Mas isso vai da opinião do cara que está desenvolvendo, ele quem sabe se prefere deixar pegando fogo ou não. Edited January 3, 2019 by Lord Henry 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