koshe Posted December 11, 2021 Share Posted December 11, 2021 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
Moderators Vinyard Posted December 11, 2021 Moderators Share Posted December 11, 2021 Hi, welcome to the forums! Your thread has been moved to the Portuguese scripting section so you can get assistance in your native language. Link to comment
vicisdev Posted December 13, 2021 Share Posted December 13, 2021 (edited) 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 e bodypart porque não estão realmente sendo usados na função de callback do evento. Edited December 13, 2021 by vicisdev Link to comment
koshe Posted December 13, 2021 Author Share Posted December 13, 2021 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
vicisdev Posted December 13, 2021 Share Posted December 13, 2021 10 hours ago, koshe said: Não sei o que fazer para ela parar de dar Hit Kill no tanque É parece que não é possível fazer isso não. O evento OnClientVehicleDamage não é acionado para explosões. Link to comment
koshe Posted December 13, 2021 Author Share Posted December 13, 2021 Será que teria como fazer de outro modo? com não sei um outro evento... Link to comment
vicisdev Posted December 13, 2021 Share Posted December 13, 2021 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
koshe Posted December 14, 2021 Author Share Posted December 14, 2021 creio que não, mas obrigado 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