TrigerSnoop Posted April 19, 2021 Share Posted April 19, 2021 Ola Pessoal, é possivel diminuir o tempo de explosão da granada? ou colocar pra ela explodir quando bate em algo? Link to comment
Other Languages Moderators androksi Posted April 23, 2021 Other Languages Moderators Share 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 Link to comment
TrigerSnoop Posted May 2, 2021 Author Share 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? Link to comment
Other Languages Moderators androksi Posted May 3, 2021 Other Languages Moderators Share 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 Link to comment
TrigerSnoop Posted May 3, 2021 Author Share 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 Link to comment
Other Languages Moderators androksi Posted May 4, 2021 Other Languages Moderators Share Posted May 4, 2021 De nada. Agradeço a oferta, mas no momento não. 1 Link to comment
TrigerSnoop Posted May 4, 2021 Author Share 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 Link to comment
Other Languages Moderators androksi Posted May 4, 2021 Other Languages Moderators Share 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 Link to comment
TrigerSnoop Posted May 4, 2021 Author Share 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 Link to comment
Other Languages Moderators androksi Posted May 4, 2021 Other Languages Moderators Share Posted May 4, 2021 Mostre o que você tentou. Link to comment
TrigerSnoop Posted May 5, 2021 Author Share 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 Link to comment
Boechat Posted May 5, 2021 Share 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 Link to comment
Other Languages Moderators androksi Posted May 5, 2021 Other Languages Moderators Share 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. Link to comment
TrigerSnoop Posted May 5, 2021 Author Share 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 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