Jump to content

[AJUDA] Snipers com munição bugada DayZ


Recommended Posts

Estou criando um servidor de dayz e estou adicionando mais armas com mesmo id, só estou com um pequeno problema na munição da sniper.                                                                                            Tudo funciona muito bem, exceto a munição.. exemplo:  a munição está 1/10 se eu atirar e continuar mirando ou apenas com a sniper na mão, vai ir pra "0/10" e volta pra "1/10" (ela recarrega) mas se eu atirar e tirar a sniper da mão antes que o "0/10" volte a ser "'1/10" ela simplesmente não recarrega, fica no "'0/10".. ai eu tenho que equipa-la novamente para voltar ao normal. é como se eu atirasse e fosse obrigado a recarregar mas não apertando "R" e sim indo no inventário e equipando a arma novamente.

elementWeaponBack = {} 
function weaponSwitchBack ( previousWeaponID, currentWeaponID ) 
    local weapon1 = getElementData(source,"currentweapon_1") 
    if not weapon1 then return end 
    local ammoData1, weapID1 = getWeaponAmmoType(weapon1) 
    local x,y,z = getElementPosition(source) 
    local rx,ry,rz = getElementRotation(source)
    triggerClientEvent(source, "NovasArmas", source)
    if previousWeaponID == weapID1 then 
        if elementWeaponBack[source] then
            detachElementFromBone(elementWeaponBack[source]) 
            destroyElement(elementWeaponBack[source]) 
            elementWeaponBack[source] = false 
        end 
        if weapon1 == "AS50 Sniper" then 
          elementWeaponBack[source] = createObject(358,x,y,z) 
          setObjectScale(elementWeaponBack[source],0.875) 
        elseif weapon1 == "CZ550 Sniper" then 
            elementWeaponBack[source] = createObject(358,x,y,z) 
            setObjectScale(elementWeaponBack[source],0.875)
        elseif weapon1 == "AWP Assimov Sniper" then 
            elementWeaponBack[source] = createObject(358,x,y,z) 
            setObjectScale(elementWeaponBack[source],0.875)
        elseif weapon1 == "AWP Dragon Lore Sniper" then 
            elementWeaponBack[source] = createObject(358,x,y,z) 
            setObjectScale(elementWeaponBack[source],0.875)     
        else 
          elementWeaponBack[source] = createObject(getWeaponObjectID(weapID1),x,y,z) 
          setObjectScale(elementWeaponBack[source],0.875) 
        end
        if elementBackpack[source] then 
            attachElementToBone(elementWeaponBack[source],source,3,0.19,-0.31,-0.1,0,270,-90) 
        else 
            attachElementToBone(elementWeaponBack[source],source,3,0.19,-0.11,-0.1,0,270,10) 
        end     
    elseif currentWeaponID == weapID1 then 
        detachElementFromBone(elementWeaponBack[source]) 
        destroyElement(elementWeaponBack[source]) 
        elementWeaponBack[source] = false 
    end
end
addEventHandler ( "onPlayerWeaponSwitch", getRootElement(), weaponSwitchBack)
function NovasArmas()
	if getElementData(getLocalPlayer(),"currentweapon_1") == "AS50 Sniper" then
		txd = engineLoadTXD("models/weap/AS50.txd", 358)
		engineImportTXD(txd, 358)
		dff = engineLoadDFF("models/weap/AS50.dff", 358)
		engineReplaceModel(dff, 358)
	elseif getElementData(getLocalPlayer(),"currentweapon_1") == "CZ550 Sniper" then
		txd = engineLoadTXD("models/weap/CZ550.txd", 358)
		engineImportTXD(txd, 358)
		dff = engineLoadDFF("models/weap/CZ550.dff", 358)
		engineReplaceModel(dff, 358)
	elseif getElementData(getLocalPlayer(),"currentweapon_1") == "AWP Assimov Sniper" then
		txd = engineLoadTXD("models/weap/AWPASSIMOV.txd", 358)
		engineImportTXD(txd, 358)
		dff = engineLoadDFF("models/weap/AWPASSIMOV.dff", 358)
		engineReplaceModel(dff, 358)
	elseif getElementData(getLocalPlayer(),"currentweapon_1") == "AWP Dragon Lore Sniper" then
		txd = engineLoadTXD("models/weap/AWPLORE.txd", 358)
		engineImportTXD(txd, 358)
		dff = engineLoadDFF("models/weap/AWPLORE.dff", 358)
		engineReplaceModel(dff, 358)
	end
end
addEventHandler("onClientResourceStart", getResourceRootElement(), NovasArmas) 
addEvent("NovasArmas", true)
addEventHandler("NovasArmas", getRootElement(), NovasArmas)

 

Link to comment

Isso ocorre por que a sniper somente tem uma bala no clip, você precisará aumenta o clip de balas usando :

setWeaponProperty("sniper", "pro", "maximum_clip_ammo", 10)
setWeaponProperty("sniper", "std", "maximum_clip_ammo", 10)
setWeaponProperty("sniper", "poor", "maximum_clip_ammo", 10)

 

  • Thanks 1
Link to comment
3 hours ago, Angelo Pereira said:

Isso ocorre por que a sniper somente tem uma bala no clip, você precisará aumenta o clip de balas usando :


setWeaponProperty("sniper", "pro", "maximum_clip_ammo", 10)
setWeaponProperty("sniper", "std", "maximum_clip_ammo", 10)
setWeaponProperty("sniper", "poor", "maximum_clip_ammo", 10)

 

Então eu já tentei isso, porém quando você segura o mouse1 ela atira quase numa velocidade de uma m4.. 

a sniper padrão ela vem com apenas uma bala no clip e recarrega automaticamente, não é possivel fazer isso com as cópias?

Edited by RyanG
Link to comment
2 hours ago, RyanG said:

Então eu já tentei isso, porém quando você segura o mouse1 ela atira quase numa velocidade de uma m4.. 

a sniper padrão ela vem com apenas uma bala no clip e recarrega automaticamente, não é possivel fazer isso com as cópias?

Então o problema é quando ele atira, e tira a arma do punho, e quando coloca novamente, a munição no clip fica 0?

Uma solução para isto eu não tenho conhecimento, agora em meio scripts daria pra corrigir "Com possibilidades de bugs" :

--/> Client-Side (Teste)
function verificar_clip (_, proximo_id_slot)
   if ( proximo_id_slot == 6 ) and ( getWeaponNameFromID ( getPedWeapon (localPlayer, 6)) == "Sniper" ) then
      if getPedAmmoInClip(localPlayer, 6) <= 0 then --/> Verificará se o Clip da Sniper Está em 0 Balas !
         local weapom = getElementData(source,"currentweapon_1")
         if not weapom then return end 
         setWeaponState( weapom, "reloading" ) --/> Recarregará a Sniper !
         -- ou /> Caso Funcionar /> Teste com : Caso queira !
         -- setWeaponClipAmmo ( weapom, 1 ) --/> Adicionara 1 Bala no Clip da Sniper !
         outputDebugString("Carregado com Sucesso!") --/> Verifique se Irá da Certo !
      end  
   end
end
addEventHandler ( "onClientPlayerWeaponSwitch", getLocalPlayer(), verificar_clip ) --/> Evento Next Weapom ! / Trocar Para a Próxima Arma

--/> Lembrando, isso é para teste, você pode adaptar no seu evento "onPlayerWeaponSwitch" do lado server-side (Se Funcionar) !

Isso é apenas para você fazer um teste, possa funciona ou não, não testei, se alguém tiver uma melhor forma, é melhor !

Link to comment
31 minutes ago, Angelo Pereira said:

Então o problema é quando ele atira, e tira a arma do punho, e quando coloca novamente, a munição no clip fica 0?

Uma solução para isto eu não tenho conhecimento, agora em meio scripts daria pra corrigir "Com possibilidades de bugs" :


--/> Client-Side (Teste)
function verificar_clip (_, proximo_id_slot)
   if ( proximo_id_slot == 6 ) and ( getWeaponNameFromID ( getPedWeapon (localPlayer, 6)) == "Sniper" ) then
      if getPedAmmoInClip(localPlayer, 6) <= 0 then --/> Verificará se o Clip da Sniper Está em 0 Balas !
         local weapom = getElementData(source,"currentweapon_1")
         if not weapom then return end 
         setWeaponState( weapom, "reloading" ) --/> Recarregará a Sniper !
         -- ou /> Caso Funcionar /> Teste com : Caso queira !
         -- setWeaponClipAmmo ( weapom, 1 ) --/> Adicionara 1 Bala no Clip da Sniper !
         outputDebugString("Carregado com Sucesso!") --/> Verifique se Irá da Certo !
      end  
   end
end
addEventHandler ( "onClientPlayerWeaponSwitch", getLocalPlayer(), verificar_clip ) --/> Evento Next Weapom ! / Trocar Para a Próxima Arma

--/> Lembrando, isso é para teste, você pode adaptar no seu evento "onPlayerWeaponSwitch" do lado server-side (Se Funcionar) !

Isso é apenas para você fazer um teste, possa funciona ou não, não testei, se alguém tiver uma melhor forma, é melhor !

Eu já corrigi de outra forma, muito obrigado novamente.

  • Like 1
Link to comment
On 04/03/2020 at 20:15, RyanG said:

Eu já corrigi de outra forma, muito obrigado novamente.

Pode nos explicar de qual forma você resolveu?... isso pode ajudar mais pessoas com esse mesmo problema..

Edited by #RooTs
Link to comment
On 06/03/2020 at 02:44, #RooTs said:

Pode nos explicar de qual forma você resolveu?... isso pode ajudar mais pessoas com esse mesmo problema..

 

setWeaponProperty("sniper", "pro", "maximum_clip_ammo", 0)
setWeaponProperty("sniper", "std", "maximum_clip_ammo", 0)
setWeaponProperty("sniper", "poor", "maximum_clip_ammo", 0)

Isso resolveu, claro, a hud ficou com o clip no 0/ammo permanentemente mas resolveu.

Edited by RyanG
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...