felipebaidoloko 3 Posted November 17 PESSOAL QUERIA SABER COMO EU COMO COLOCAR UM HEATSHOT NO onClientPlayerWeaponFire Share this post Link to post
Lord Henry 1,048 Posted November 17 (edited) Heatshot? Nunca ouvi falar disso. Edited November 17 by Lord Henry Share this post Link to post
felipebaidoloko 3 Posted November 17 (edited) headshot EU FIZ UM SISTEMA A ONDE NAO USA O onClientPlayerDamage E SIM O onClientPlayerWeaponFire E PRECISAVA USAR UMA OPÇÃO QUE IDENTIFICA A CABEÇA DO PLAYER PARA EXECUTAR O headshot Edited November 17 by felipebaidoloko Share this post Link to post
MesaDowN 13 Posted November 17 Para quê o uso de tanto CAPS-LOCK jovem? Parece que você está gritando com alguém aqui.. Share this post Link to post
DNL291 624 Posted November 17 https://wiki.multitheftauto.com/wiki/ProcessLineOfSight Tenha em mente que essa função é 'pesada', só use se realmente precisar ou se não se importa com performance. Share this post Link to post
felipebaidoloko 3 Posted November 17 @DNL291 COMO QUE EU FAÇO PRA COLOCAR NESSA FUNÇÃO AQUI function tiro(wap,mag,ClipM,x,y,z,element) if getType(element) == "player" then dano, weapon = weaponDamage() triggerServerEvent("sincroniaSv", getLocalPlayer(), element, dano, weapon) end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), tiro) queria colocar ai pra identificar a onde foi pego, se foi no Torso ou Head @DNL291 COMO QUE EU FAÇO PRA COLOCAR NESSA FUNÇÃO AQUI function tiro(wap,mag,ClipM,x,y,z,element) if getType(element) == "player" then dano, weapon = weaponDamage() triggerServerEvent("sincroniaSv", getLocalPlayer(), element, dano, weapon) end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), tiro) queria colocar ai pra identificar a onde foi pego, se foi no Torso ou Head local x,y,z,xx,xy,xz,_,_,torso = processLineOfSight(startX, startY, startZ, hitX, hitY, hitZ,false,false,true) Share this post Link to post
felipebaidoloko 3 Posted November 17 (edited) function tiro(wap,mag,ClipM,hitX, hitY, hitZ,element,startX, startY, startZ) if element then if getType(element) == "player" then local x,y,z,xx,xy,xz,_,_,torso = processLineOfSight(hitX, hitY, hitZ,startX, startY, startZ,false,false,true) if torso == 9 then outputChatBox("OK!!!!") else outputChatBox("NAO OK!!!!") end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), tiro) Edited November 17 by Lord Henry Corrigida formatação de texto para Lua. Share this post Link to post
MRXBBC 4 Posted November 18 2 hours ago, felipebaidoloko said: function tiro(wap,mag,ClipM,hitX, hitY, hitZ,element,startX, startY, startZ) if element then if getType(element) == "player" then local x,y,z,xx,xy,xz,_,_,torso = processLineOfSight(hitX, hitY, hitZ,startX, startY, startZ,false,false,true) if torso == 9 then outputChatBox("OK!!!!") else outputChatBox("NAO OK!!!!") end end end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), tiro) Mano tem um codigo assim, n sei se já conseguiu resolver o problema function sendHeadshot ( attacker, weapon, bodypart, loss ) if attacker == getLocalPlayer() then if bodypart == 9 then triggerServerEvent( "onServerHeadshot", getRootElement(), source, attacker, weapon, loss ) setElementHealth ( source, 0 ) setPedHeadless( source, true ) end end end addEventHandler ( "onClientPedDamage", getRootElement(), sendHeadshot ) addEventHandler ( "onClientPlayerDamage", getRootElement(), sendHeadshot ) Share this post Link to post
DNL291 624 Posted November 18 Você quer setar o dano server-side, certo? Você pode fazer com onClientPlayerDamage. Não precisa ser no mesmo evento mencionado. Share this post Link to post
felipebaidoloko 3 Posted November 18 eu preciso usar o addEventHandler("onClientPlayerWeaponFire" nao o "onClientPlayerDamage" Share this post Link to post
felipebaidoloko 3 Posted November 20 (edited) podem me ajuda? preciso identificar o tiro na cabeça do jogador fiz certo ela? mas nao da certo function tiro(wap,mag,ClipM,hitX, hitY, hitZ,element,startX, startY, startZ) local x,y,z,xx,xy,xz,_,_,torso = processLineOfSight(startX, startY, startZ, hitX, hitY, hitZ,false,false,true) if torso == 9 then -- COM HS else -- SEM HS end end addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), tiro) Edited November 20 by felipebaidoloko Share this post Link to post
Lord Henry 1,048 Posted November 20 (edited) Faltou a primeira variável retornada pelo processLineOfSight. O primeiro valor retornado é um booleano que indica se a linha colidiu em algo, o segundo valor dai sim é o X onde a linha colidiu. Outra coisa: Você definiu pra ele não detectar construções, ou seja, atravessar por elas até encontrar um jogador. Isso significa que se um jogador mirar na cabeça de outro jogador e atirar através de uma parede, vai considerar como HeadShot. local hit, x, y, z, hitElement, xx, yy, zz, _, _, piece = processLineOfSight (startX, startY, startZ, hitX, hitY, hitZ, true, false) -- Não precisa declarar a detecção de players como true, pois ela já é true por padrão. Só declare se for usar como false ou então se for usar algum parâmetro seguinte. if (hit) then -- Se a linha colidiu em algo, então: (caso contrário, todas as demais variáveis serão nil) if (getElementType (hitElement) == "player") then -- Se o elemento em que a linha colidiu for um jogador, então: if (piece == 9) then -- Se a linha colidiu na cabeça desse jogador, então: -- Com HS. else -- Sem HS. end end end Edited November 20 by Lord Henry 1 Share this post Link to post
felipebaidoloko 3 Posted November 20 2 hours ago, Lord Henry said: Faltou a primeira variável retornada pelo processLineOfSight. O primeiro valor retornado é um booleano que indica se a linha colidiu em algo, o segundo valor dai sim é o X onde a linha colidiu. Outra coisa: Você definiu pra ele não detectar construções, ou seja, atravessar por elas até encontrar um jogador. Isso significa que se um jogador mirar na cabeça de outro jogador e atirar através de uma parede, vai considerar como HeadShot. local hit, x, y, z, hitElement, xx, yy, zz, _, _, piece = processLineOfSight (startX, startY, startZ, hitX, hitY, hitZ, true, false) -- Não precisa declarar a detecção de players como true, pois ela já é true por padrão. Só declare se for usar como false ou então se for usar algum parâmetro seguinte. if (hit) then -- Se a linha colidiu em algo, então: (caso contrário, todas as demais variáveis serão nil) if (getElementType (hitElement) == "player") then -- Se o elemento em que a linha colidiu for um jogador, então: if (piece == 9) then -- Se a linha colidiu na cabeça desse jogador, então: -- Com HS. else -- Sem HS. end end end Eu tinha conseguido, fui atras do forum como funcionava essa função, e foi igual o que vc sitou a cima OBRIGADO Share this post Link to post
felipebaidoloko 3 Posted November 21 estou com um problema nela, nao ta funcionando 100% eu coloco o hitElement ele pega as vezes o tiro fiz ate um teste aqui mais quando uso o element da função ele funciona certinho addEventHandler("onClientPlayerWeaponFire", getLocalPlayer(), function(wap,mag,ClipM,x,y,z,element,startX, startY, startZ) hitElement, x, y, z, elementHit, nx, ny, nz, mat, light, bodypart = processLineOfSight ( startX, startY, startZ, x, y, z, false, false, true) if (hitElement) then if (getElementType (element) == "player") then if bodypart == 9 then outputChatBox("HEADSHOT") else outputChatBox("Acerto") end end else outputChatBox("FORA DO HIT") end end) ELE APARECE A MENSAGEM "FORA DO HIT" e tipo quero que ele pega certeiro o HS e no peito sem que apareça o "FORA DO HIT" ele falha as vezes ele fica como nil 1 Share this post Link to post