Jump to content

Como faço para o Rhino perder mais dano com RPG?


Recommended Posts

Client

local armoredVehicles = { [432] = true, [601] = true }

function warMachineDamage(attacker, weapon, loss, x, y, z, tire)
	local model = getElementModel(source)
    if weapon and armoredVehicles[model] then 
        cancelEvent()
		triggerServerEvent ("damageWarMachine", source, source, attacker, weapon, bodypart )
    end
end
addEventHandler("onClientVehicleDamage", root, warMachineDamage)

Server

addEvent( "damageWarMachine", true )
function damageWarMachine( vehicle, attacker, weapon, bodypart)
	local vehicleHealth = getElementHealth(vehicle)
	setElementHealth(vehicle, vehicleHealth - 250 )
end 
addEventHandler( "damageWarMachine", root, damageWarMachine )

Não quero que ele leve Hit Kill, e sim tome danos de leve, exemplo: 1 tiro de RPG tira 40% de vida. Más não consigo ?

Link to comment

Para ser sincero isso deveria estar funcionando. Como não está funcionando da forma que a gente espera, a gente vai precisar debuggar o código para entender melhor quais valores estamos recebendo e se está sendo executado a funcionalidade esperada.

Primeiro de tudo você precisa ter certeza do valor que você está recebendo em weapon na função warMachineDamage. Para isso comente o código completo e execute:

function warMachineDamage(attacker, weapon, loss, x, y, z, tire)
  outputDebugString(weapon)
end

Com base no resultado que aparecerá no console do cliente, você conseguirá entender melhor o que está acontecendo assim que alguém causar algum dano num veículo.

Agora me permita esclarecer uma coisa mais genérica em relação à programaçao. Você não precisa especificar todos os parâmetros de uma função caso não estiver usando-os. Por exemplo na função warMachineDamage o parâmetro que você está usando é apenas o weapon portanto os outros não precisam ser declarados com exceção do attacker.

A mesma coisa acontece com o evento damageWarMachine não tem necessidade de enviar os parâmetros source, attacker, weapon bodypart porque não estão realmente sendo usados na função de callback do evento.

Edited by vicisdev
Link to comment

Então, descobri que o dano que ele levava era pelo fogo (id 37), então fiz um negocio ali pra apagar o fogo perto do tanque, porém, continua dando hit kill no tanque

 

local armoredVehicles = { [432] = true, [601] = true }

function warMachineDamage(attacker, weapon, loss, x, y, z, tire)
	local model = getElementModel(source)
	for k, v in ipairs ( getElementsByType("vehicle") ) do
	local xM, yM, zM = getElementPosition(v)
    if weapon and armoredVehicles[model] then 
		setTimer(function ()
		extinguishFire(xM, yM, zM, 10)
		outputDebugString("fogo apagado")
		end, 1250, 1)
		outputDebugString(weapon)
        cancelEvent()
		triggerServerEvent ("damageWarMachine", source, source, attacker, weapon )
		end
    end
end
addEventHandler("onClientVehicleDamage", root, warMachineDamage)

(esse código pode estar bem ruim, não sei muito bem programar e sou bem pioneiro nisso, então desculpe pelos erros códigos)

Obs: O timer que eu botei, é por causa de não sei o que, mas fazia eu crashar, então botei um timer e parou de crashar meu MTA

Não sei o que fazer para ela parar de dar Hit Kill no tanque 

Link to comment
3 hours ago, koshe said:

Será que teria como fazer de outro modo? com não sei um outro evento...

 

Eu tentei de várias formas, mas não consegui chegar à um resultado. O que eu percebi é que o Rhino já precisa de mais de duas bazucadas para finalmente explodir. Não era exatamente esse comportamento que você estava querendo?

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