Jump to content

[AJUDA] HP de Veiculos


Recommended Posts

6 minutes ago, OverKILL said:
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

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 by OverKILL
Link to comment
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

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
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
  • Other Languages Moderators

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 by Lord Henry
  • Thanks 1
Link to comment
  • Other Languages Moderators
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
  • Other Languages Moderators

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 by Lord Henry
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...