TrigerSnoop Posted April 19, 2021 Posted April 19, 2021 Ola Pessoal, é possivel diminuir o tempo de explosão da granada? ou colocar pra ela explodir quando bate em algo?
androksi Posted April 23, 2021 Posted April 23, 2021 Olá. Sim, é possível. Fiz até um código de teste. A granada explode 500ms após ser lançada. addEventHandler("onClientProjectileCreation", root, function(creator) iprint(getProjectileType(source)) if getProjectileType(source) == 16 then setProjectileCounter(source, 500) end end) Funções: getProjectileType - para obter o tipo de projétil. setProjectileCounter - o tempo para explodir. Evento: onClientProjectileCreation - o evento é client-side, porém ele sincroniza para todos assim que alguém cria um projétil; seja molotov, granada, basuca. 1 1
TrigerSnoop Posted May 2, 2021 Author Posted May 2, 2021 On 23/04/2021 at 09:47, andr0xy said: Olá. Sim, é possível. Fiz até um código de teste. A granada explode 500ms após ser lançada. addEventHandler("onClientProjectileCreation", root, function(creator) iprint(getProjectileType(source)) if getProjectileType(source) == 16 then setProjectileCounter(source, 500) end end) Funções: getProjectileType - para obter o tipo de projétil. setProjectileCounter - o tempo para explodir. Evento: onClientProjectileCreation - o evento é client-side, porém ele sincroniza para todos assim que alguém cria um projétil; seja molotov, granada, basuca. Muito obrigado, e tbm seria possivel fazela explodir ao bater em algo, como no chão por exemplo ou na parede?
androksi Posted May 3, 2021 Posted May 3, 2021 Sim, é possível. Fiz para explodir quando bater no chão. Segue o código de testes: Spoiler local createdGrenades = {} local function processGrenades() for index, grenade in pairs(createdGrenades) do if isElement(grenade) then local gx, gy, gz = getElementPosition(grenade) local ground = getGroundPosition(gx, gy, gz) if gz < ground + 0.55 then iprint("Hit!") setProjectileCounter(grenade, 0) end else table.remove(createdGrenades, index) if #createdGrenades == 0 then removeEventHandler("onClientPreRender", root, processGrenades) end end end end addEventHandler("onClientProjectileCreation", root, function(creator) if getProjectileType(source) == 16 then table.insert(createdGrenades, source) setProjectileCounter(source, 10000) if #createdGrenades == 1 then addEventHandler("onClientPreRender", root, processGrenades) end end end) Agora, para fazer com que qualquer hit na granada, fizesse a explodir, seria um pouco mais complexo. Fiz alguns testes, mas não funcionou muito bem. Caso se interesse, tentei usando a função isLineOfSightClear. 1 1
TrigerSnoop Posted May 3, 2021 Author Posted May 3, 2021 9 hours ago, andr0xy said: Sim, é possível. Fiz para explodir quando bater no chão. Segue o código de testes: Hide contents local createdGrenades = {} local function processGrenades() for index, grenade in pairs(createdGrenades) do if isElement(grenade) then local gx, gy, gz = getElementPosition(grenade) local ground = getGroundPosition(gx, gy, gz) if gz < ground + 0.55 then iprint("Hit!") setProjectileCounter(grenade, 0) end else table.remove(createdGrenades, index) if #createdGrenades == 0 then removeEventHandler("onClientPreRender", root, processGrenades) end end end end addEventHandler("onClientProjectileCreation", root, function(creator) if getProjectileType(source) == 16 then table.insert(createdGrenades, source) setProjectileCounter(source, 10000) if #createdGrenades == 1 then addEventHandler("onClientPreRender", root, processGrenades) end end end) Agora, para fazer com que qualquer hit na granada, fizesse a explodir, seria um pouco mais complexo. Fiz alguns testes, mas não funcionou muito bem. Caso se interesse, tentei usando a função isLineOfSightClear. muito bom obrigado, vc quer fazer uns trabalhos pra min? pago o preço que sugerir! add discord L0KZERA#1826
TrigerSnoop Posted May 4, 2021 Author Posted May 4, 2021 4 hours ago, andr0xy said: De nada. Agradeço a oferta, mas no momento não. Muito obrigado pela ajuda, sem querer pedir muito poderia me ajudar na ultima coisa, precisava de um script que faria o boneco andar somente no modo walk('ALT') por id, se ru adicionar o id da skin 200, somente essa skin vai andar no walk. Bom desde ja agradeço
androksi Posted May 4, 2021 Posted May 4, 2021 Você pode usar o evento onElementModelChange. Caso o ID seja 200, use a função toggleControl no jogador, usando a propriedade "sprint" e definindo-o como false. Lembre-se de reverter caso não seja a skin 200. Recomendo criar uma tabela com os IDs. 1
TrigerSnoop Posted May 4, 2021 Author Posted May 4, 2021 5 hours ago, andr0xy said: Você pode usar o evento onElementModelChange. Caso o ID seja 200, use a função toggleControl no jogador, usando a propriedade "sprint" e definindo-o como false. Lembre-se de reverter caso não seja a skin 200. Recomendo criar uma tabela com os IDs. pra min não deu certo
TrigerSnoop Posted May 5, 2021 Author Posted May 5, 2021 (edited) 2 hours ago, andr0xy said: Mostre o que você tentou. function teste (thePlayer ) if ( getElementModel (thePlayer) == ) then toggleControl ( source, "sprint", false ) else toggleControl ( source, "sprint", true ) end end addEventHandler ( "onElementModelChange", teste ) Edited May 5, 2021 by NotoriusDayZ
Boechat Posted May 5, 2021 Posted May 5, 2021 (edited) if ( getElementModel (thePlayer) == ) then A sua condição está errada, thePlayer não é um elemento. Os parâmetros desse evento são o modelo antigo e o novo modelo, não um player como vc passou pra sua função, já o source é o elemento que está sendo modificado. E também faltou o 200 depois do == para verificar. O que você poderia fazer, semelhante ao que você fez mas de uma forma correta, é: if getElementModel(source) == 200 then ... Mas por questão de desempenho é melhor pegar o newModel (que é o atual model/skin do elemento) e verificar se é 200, em vez de chamar a função getElementModel pra isso... function onPlayerModelChange (oldModel, newModel ) --Os parâmetros são a antiga e a nova skin if ( newModel == 200 ) then -- Verifica se a nova skin é a de ID 200 toggleControl ( source, "sprint", false ) --Se for: else toggleControl ( source, "sprint", true ) --Se não for: end end addEventHandler ( "onElementModelChange", root, onPlayerModelChange ) -- Aqui também tinha faltado o elemento a qual o evento vai ser anexado, no caso o root. Eu nunca usei esse evento e nem testei aqui, veja se funciona pra você e qualquer coisa posta aí no fórum Edited May 5, 2021 by Boechat 1
androksi Posted May 5, 2021 Posted May 5, 2021 O código que o Boechat te mandou parece bom e parece funcionar. Só um adendo: faça uma tabela das skins que irão andar apenas no modo lento, pra evitar fazer 10 condições desnecessárias. Usando o código do Boechat: local nonSprintSkins = { -- [ID DA SKIN] = true [200] = true, [2] = true, [51] = true } function onPlayerModelChange (oldModel, newModel) --Os parâmetros são a antiga e a nova skin if ( nonSprintSkins[newModel] ) then -- Verifica se a nova skin é a de ID 200 toggleControl ( source, "sprint", false ) --Se for: else toggleControl ( source, "sprint", true ) --Se não for: end end addEventHandler ( "onElementModelChange", root, onPlayerModelChange ) -- Aqui também tinha faltado o elemento a qual o evento vai ser anexado, no caso o root.
TrigerSnoop Posted May 5, 2021 Author Posted May 5, 2021 3 hours ago, andr0xy said: O código que o Boechat te mandou parece bom e parece funcionar. Só um adendo: faça uma tabela das skins que irão andar apenas no modo lento, pra evitar fazer 10 condições desnecessárias. Usando o código do Boechat: local nonSprintSkins = { -- [ID DA SKIN] = true [200] = true, [2] = true, [51] = true } function onPlayerModelChange (oldModel, newModel) --Os parâmetros são a antiga e a nova skin if ( nonSprintSkins[newModel] ) then -- Verifica se a nova skin é a de ID 200 toggleControl ( source, "sprint", false ) --Se for: else toggleControl ( source, "sprint", true ) --Se não for: end end addEventHandler ( "onElementModelChange", root, onPlayerModelChange ) -- Aqui também tinha faltado o elemento a qual o evento vai ser anexado, no caso o root. Caraca vcs me ajudaram muito, muito obrigado, vou utilizar muito essa ferramenta. 1
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