411 lines
		
	
	
		
			No EOL
		
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			No EOL
		
	
	
		
			20 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local lockKey = Config.LockKey
 | |
| local breathing = false
 | |
| local stamina = false
 | |
| local staminaval = Config.Stamina 
 | |
| 
 | |
| local sniperRifle    = 100416529
 | |
| local heavySniper    = 205991906
 | |
| local heavySniperMk2 = 177293209
 | |
| local marksmanRifle  = -952879014
 | |
| 
 | |
| local grenade        = -1813897027
 | |
| local stickybomb     = 741814745
 | |
| local proxmine       = -1420407917
 | |
| local pipebomb       = -1169823560
 | |
| 
 | |
| function notify(text)
 | |
|     SetNotificationTextEntry("STRING")
 | |
|     AddTextComponentString(text)
 | |
|     DrawNotification(true, false)
 | |
| end
 | |
| 
 | |
| if Config.UseLindenInventory == false then 
 | |
|     if Config.AutoReload then 
 | |
|         SetWeaponsNoAutoreload(false)
 | |
|     else
 | |
|         SetWeaponsNoAutoreload(true)
 | |
|     end
 | |
| end
 | |
| 
 | |
| Citizen.CreateThread(function()
 | |
|     while true do
 | |
|         Citizen.Wait(10)
 | |
|        
 | |
|         local playerPed = GetPlayerPed(-1)
 | |
|         local player = PlayerId()
 | |
|  
 | |
|         hasWeapon,pedWeapon = GetCurrentPedWeapon(playerPed)
 | |
|         
 | |
|         if hasWeapon ~= false and pedWeapon ~= 0 then
 | |
|             while hasWeapon ~= false do 
 | |
|                 Citizen.Wait(1)
 | |
|                 local hasWeapon, pedWeapon = GetCurrentPedWeapon(playerPed)
 | |
|                 local weaponType = GetWeaponDamageType(pedWeapon)
 | |
|                 local weaponShootingType = GetWeapontypeGroup(pedWeapon)
 | |
|                 
 | |
|                 
 | |
|                 while not HasAnimDictLoaded("mp_arresting") do 
 | |
|                     Citizen.Wait(1)
 | |
|                     RequestAnimDict("mp_arresting")
 | |
|                 end
 | |
|                 
 | |
|                 if pedWeapon == grenade or pedWeapon == stickybomb or pedWeapon == proxmine or pedWeapon == pipebomb then 
 | |
|                     break 
 | |
|                 end
 | |
| 
 | |
|                 if weaponType == 1 or weaponType == 2 or weaponType == 12 or weaponType == 6 or weaponType == 14 or weaponType == 13 then
 | |
|                     break
 | |
|                 else
 | |
|                     if not Config.UseCrosshair then 
 | |
|                         HideHudComponentThisFrame(14)
 | |
| 
 | |
|                         if pedWeapon == sniperRifle or pedWeapon == heavySniper or pedWeapon == heavySniperMk2 or pedWeapon == marksmanRifle then 
 | |
|                             ShowHudComponentThisFrame(14)
 | |
|                         end
 | |
|                     end
 | |
|                     
 | |
|                     
 | |
|                         if Config.UseWeaponLock == true then 
 | |
|                             if Config.WeaponLock[pedWeapon] == 0 then
 | |
|                                 if IsPedInAnyVehicle(playerPed, true) then
 | |
|                                     
 | |
|                                     if IsControlJustPressed(0, lockKey) and Config.WeaponsNoLock[pedWeapon] == false then
 | |
|                                         Config.WeaponLock[pedWeapon] = 1
 | |
|                                         if Config.WeaponLockMessage then
 | |
|                                             if Config.UseBigNotify then 
 | |
|                                                 exports['b1g_notify']:Notify('true', str_weapon_locked)
 | |
| 
 | |
|                                             else
 | |
|                                                 notify(str_weapon_locked)
 | |
|                                             end
 | |
|                                         end
 | |
|                                     end
 | |
|                                 else
 | |
|                                     
 | |
|                                     if IsControlJustPressed(0, lockKey) and Config.WeaponsNoLock[pedWeapon] == false then
 | |
|                                         Config.WeaponLock[pedWeapon] = 1
 | |
|                                         if Config.WeaponLockMessage then
 | |
|                                             if Config.UseBigNotify then
 | |
|                                                 exports['b1g_notify']:Notify('true', str_weapon_locked)
 | |
|                                             else
 | |
|                                                 notify(str_weapon_locked)
 | |
|                                             end
 | |
|                                         end
 | |
|                                         RequestAnimDict("mp_arresting")
 | |
|                                         TaskPlayAnim(playerPed, "mp_arresting", "a_uncuff", 2.0, 2.0, 1000, 52, 0, false, false, false)
 | |
|                                     end
 | |
|                                 end
 | |
|                             else
 | |
|                                 if IsPedInAnyVehicle(playerPed, true) then
 | |
|                                     
 | |
|                                     if IsControlJustPressed(0, lockKey) and Config.WeaponsNoLock[pedWeapon] == false then
 | |
|                                         Config.WeaponLock[pedWeapon] = 0
 | |
|                                         if Config.WeaponLockMessage then
 | |
|                                             if Config.UseBigNotify then
 | |
|                                                 exports['b1g_notify']:Notify('adm', str_weapon_unlocked)
 | |
|                                             else
 | |
|                                                 notify(str_weapon_unlocked)
 | |
|                                             end
 | |
|                                         end
 | |
|                                     end
 | |
|                                 else
 | |
|                                    
 | |
|                                     if IsControlJustPressed(0, lockKey) and Config.WeaponsNoLock[pedWeapon] == false then
 | |
|                                         Config.WeaponLock[pedWeapon] = 0
 | |
|                                         if Config.WeaponLockMessage then
 | |
|                                             if Config.UseBigNotify then
 | |
|                                                 exports['b1g_notify']:Notify('adm', str_weapon_unlocked)
 | |
|                                             else
 | |
|                                                 notify(str_weapon_unlocked)
 | |
|                                             end
 | |
|                                         end
 | |
|                                         RequestAnimDict("mp_arresting")
 | |
|                                         TaskPlayAnim(playerPed, "mp_arresting", "a_uncuff", 2.0, 2.0, 1000, 52, 0, false, false, false)
 | |
|                                     end
 | |
|                                 end
 | |
|                             end
 | |
|                         else
 | |
|                         end
 | |
|                     
 | |
| 
 | |
|                     if Config.UseWeaponLock == false or Config.WeaponLock[pedWeapon] == 0 or Config.WeaponsNoLock[pedWeapon] then 
 | |
| 
 | |
|                         if IsPedShooting(playerPed) then 
 | |
|                             
 | |
|                             local _,pedWeapon = GetCurrentPedWeapon(playerPed)
 | |
| 
 | |
|                             local pedCamPitch  = GetGameplayCamRelativePitch()
 | |
|                             local weaponRecoil = Config.WeaponRecoil[pedWeapon]
 | |
|                             if weaponRecoil == nil then
 | |
|                                 weaponRecoil = Config.StandardWerte.Recoil
 | |
|                             end
 | |
|                             local weaponShake  = Config.WeaponShake[pedWeapon]
 | |
|                             if weaponShake == nil then
 | |
|                                 weaponShake = Config.StandardWerte.Shake
 | |
|                             end
 | |
|                             local recoilSpeed  = Config.WeaponRecoilSpeed
 | |
|                             ViewMode = GetFollowPedCamViewMode()
 | |
| 
 | |
|                             if ViewMode == 4 then 
 | |
|                                 newWeaponRecoil = weaponRecoil * Config.FirstPersonRecoilFactor
 | |
|                                 SetGameplayCamRelativePitch(pedCamPitch + newWeaponRecoil, recoilSpeed)
 | |
|                             else
 | |
|                                 SetGameplayCamRelativePitch(pedCamPitch + weaponRecoil, recoilSpeed)
 | |
|                             end
 | |
| 
 | |
|                             if Config.WeaponShake and stamina == false then 
 | |
|                                 ShakeGameplayCam("SMALL_EXPLOSION_SHAKE", weaponShake)
 | |
|                             end
 | |
|                             if Config.UseCustomDamage then 
 | |
|                                 SetWeaponDamageModifierThisFrame(pedWeapon, Config.WeaponDamage[pedWeapon] or Config.StandardWerte.Damage)
 | |
|                             end
 | |
| 
 | |
|                             if Config.UseScreenEffect then
 | |
|                                 AnimpostfxPlay(Config.ScreenEffect, Config.ScreenEffectLength, Config.ScreenEffectLoop)
 | |
|                             end
 | |
| 
 | |
|                             if IsPedInAnyVehicle(playerPed, true) then 
 | |
|                                 Citizen.Wait(0)
 | |
|                                 PedVehicle = GetVehiclePedIsIn(playerPed, false)
 | |
|                                 PedVehicleType = GetVehicleClass(PedVehicle)
 | |
|                                 
 | |
|                                 for class, allowed in pairs(Config.VehicleWhitelist) do 
 | |
|                                     if class == PedVehicleType and allowed == true then 
 | |
|                                         local vehRecoilVal = Config.VehicleRecoilValue
 | |
|                                         local vehShakeVal  = Config.VehicleShakeValue
 | |
| 
 | |
|                                         if not Config.UseCrosshair then 
 | |
|                                             HideHudComponentThisFrame(14)
 | |
|                                         end
 | |
| 
 | |
|                                         if Config.VehicleRecoil then 
 | |
|                                             SetGameplayCamRelativePitch(pedCamPitch + weaponRecoil + vehRecoilVal, recoilSpeed)
 | |
|                                             if Config.VehicleShake then 
 | |
|                                                 ShakeGameplayCam("SMALL_EXPLOSION_SHAKE", weaponShake + vehShakeVal)
 | |
|                                             end
 | |
|                                         end
 | |
|                                     end
 | |
|                                 end
 | |
| 
 | |
|                                 
 | |
|                             end
 | |
| 
 | |
|                             shooting = true
 | |
|                         end
 | |
| 
 | |
| 
 | |
|                         if hasWeapon == false then 
 | |
|                             break 
 | |
|                         end
 | |
|                     else
 | |
|                         DisablePlayerFiring(player, true)
 | |
|                         if IsControlJustPressed(0, 237) then 
 | |
|                             if Config.WeaponLockMessage then
 | |
|                                 if Config.UseBigNotify then
 | |
|                                     exports['b1g_notify']:Notify('false', str_weapon_still_locked)
 | |
|                                 else
 | |
|                                     notify(str_weapon_still_locked)
 | |
|                                 end
 | |
|                             end
 | |
|                         end
 | |
| 
 | |
|                         
 | |
|                         if hasWeapon == false then 
 | |
|                             break 
 | |
|                         end
 | |
|                     end
 | |
| 
 | |
|                     --[[STAMINA SYSTEM]]--
 | |
|                     if Config.UseStaminaSystem then 
 | |
|                         if shooting and IsControlPressed(0, 25) and staminaval > 0 then
 | |
|                             
 | |
|                             if stamina then 
 | |
|                                 shooting = false
 | |
|                             else
 | |
|                                 shooting = false
 | |
|                             end
 | |
|                         end
 | |
| 
 | |
|                         if not IsGameplayCamShaking() and IsControlPressed(0, 25) then
 | |
|                             ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueNormal) 
 | |
|                         end
 | |
| 
 | |
|                         if IsControlJustPressed(0, 25) then 
 | |
|                             ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueNormal)
 | |
|                             
 | |
|                             local player = GetPlayerServerId(PlayerId())
 | |
|                             if IsControlPressed(0, 25) then 
 | |
|                                 if IsPedShooting(playerPed) then 
 | |
|                                     ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueNormal) 
 | |
|                                 end
 | |
|                             end
 | |
|                             breathing = true
 | |
|                         end
 | |
| 
 | |
|                         if IsControlJustReleased(0, 25) then
 | |
|                             StopGameplayCamShaking(true)
 | |
|                             breathing = false
 | |
|                             stamina = false
 | |
|                         end
 | |
| 
 | |
|                         if IsControlJustPressed(0, 21) and breathing == true and staminaval ~= 0 then 
 | |
|                             ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueHoldBreath)
 | |
|                             stamina = true
 | |
|                         end
 | |
|                         
 | |
|                         if stamina and staminaval >= 0 then 
 | |
|                             staminaval = staminaval -1
 | |
|                             if staminaval == 0 then 
 | |
|                                 ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueNormal + Config.BreathingValueNoStamina)
 | |
|                                 DisableControlAction(0, 21, true)
 | |
|                                 AnimpostfxPlay("SwitchHUDIn", 0, false)
 | |
|                             end
 | |
|                         else 
 | |
|                             if staminaval < Config.Stamina then 
 | |
|                                 staminaval = staminaval + 1 
 | |
|                                 
 | |
|                                 if IsControlJustPressed(0, 24) then 
 | |
|                                     ShakeGameplayCam("HAND_SHAKE", Config.BreathingValueNormal + Config.BreathingValueNoStamina)
 | |
|                                 end
 | |
| 
 | |
|                                 if staminaval > Config.StaminaTreshold then 
 | |
|                                     AnimpostfxStopAll()
 | |
|                                     DisableControlAction(0, 21, false)
 | |
|                                     stamina = false
 | |
|                                 end
 | |
|                             end
 | |
|                         end
 | |
|                     end
 | |
| 
 | |
|                     --[[FIRING MODES]]--
 | |
|                     if Config.UseWeaponFiringMode then 
 | |
|                         if weaponShootingType == -957766203 or weaponShootingType == 970310034 then 
 | |
|                             if IsPedInAnyVehicle(playerPed, true) then
 | |
|                                 if IsControlJustPressed(0, Config.WeaponFiringModeKey) then
 | |
|                                     if Config.WeaponFiringMode[pedWeapon] == 1 then 
 | |
|                                         Config.WeaponFiringMode[pedWeapon] = 0
 | |
|                                         if Config.UseBigNotify then
 | |
|                                             exports['b1g_notify']:Notify('true', str_firing_mode_auto)
 | |
|                                         else
 | |
|                                             notify(str_firing_mode_auto)
 | |
|                                         end
 | |
|                                     else
 | |
|                                         Config.WeaponFiringMode[pedWeapon] = 1
 | |
|                                         if Config.UseBigNotify then
 | |
|                                             exports['b1g_notify']:Notify('true', str_firing_mode_single)
 | |
|                                         else
 | |
|                                             notify(str_firing_mode_single)
 | |
|                                         end
 | |
|                                     end
 | |
|                                 end
 | |
|                                 
 | |
|                                 if Config.WeaponFiringMode[pedWeapon] == 1 then
 | |
|                                     if IsPedDoingDriveby(playerPed) then
 | |
|                                         local _,pedWeapon = GetCurrentPedWeapon(playerPed)
 | |
|                                         local pedCamPitch  = GetGameplayCamRelativePitch()
 | |
|                                         local weaponRecoil = Config.WeaponRecoil[pedWeapon]
 | |
|                                         local weaponShake  = Config.WeaponShake[pedWeapon]
 | |
|                                         local recoilSpeed  = Config.WeaponRecoilSpeed
 | |
|                                         local vehRecoilVal = Config.VehicleRecoilValue
 | |
|                                         local vehShakeVal  = Config.VehicleShakeValue
 | |
| 
 | |
|                                         while IsControlPressed(0, 24) or IsDisabledControlPressed(0, 24) do
 | |
|                                             Citizen.Wait(5)
 | |
|                                             DisablePlayerFiring(player, true)
 | |
|                                             if not Config.UseCrosshair then 
 | |
|                                                 HideHudComponentThisFrame(14)
 | |
|                                             end
 | |
|                                             if Config.VehicleRecoil then 
 | |
|                                                 SetGameplayCamRelativePitch(pedCamPitch + weaponRecoil + vehRecoilVal, recoilSpeed)
 | |
|                                                 if Config.VehicleShake then 
 | |
|                                                     ShakeGameplayCam("SMALL_EXPLOSION_SHAKE", weaponShake + vehShakeVal)
 | |
|                                                 end
 | |
|                                             end
 | |
|                                         end
 | |
|                                     end
 | |
|                                 end
 | |
|                                 
 | |
|                             else
 | |
|                                 if IsControlJustPressed(0, Config.WeaponFiringModeKey) then
 | |
|                                     if Config.WeaponFiringMode[pedWeapon] == 1 then 
 | |
|                                         Config.WeaponFiringMode[pedWeapon] = 0
 | |
|                                         if Config.UseBigNotify then
 | |
|                                             exports['b1g_notify']:Notify('true', str_firing_mode_auto)
 | |
|                                         else
 | |
|                                             notify(str_firing_mode_auto)
 | |
|                                         end
 | |
|                                     else
 | |
|                                         Config.WeaponFiringMode[pedWeapon] = 1
 | |
|                                         if Config.UseBigNotify then
 | |
|                                             exports['b1g_notify']:Notify('true', str_firing_mode_single)
 | |
|                                         else
 | |
|                                             notify(str_firing_mode_single)
 | |
|                                         end
 | |
|                                     end
 | |
|                                 end
 | |
| 
 | |
|                                 if Config.WeaponFiringMode[pedWeapon] == 1 then 
 | |
|                                     if IsPedShooting(playerPed) then
 | |
|                                         while IsControlPressed(0, 24) or IsDisabledControlPressed(0, 24) do
 | |
|                                             Citizen.Wait(0)
 | |
|                                             DisablePlayerFiring(player, true)
 | |
|                                             if not Config.UseCrosshair then 
 | |
|                                                 HideHudComponentThisFrame(14)
 | |
|                                             end
 | |
|                                         end
 | |
|                                     end
 | |
|                                 end
 | |
|                             end
 | |
|                         end
 | |
|                     end
 | |
|                 end
 | |
|             end 
 | |
|         else 
 | |
|             hasWeapon = false 
 | |
|         end
 | |
|     end
 | |
| end)
 | |
| 
 | |
| Citizen.CreateThread(function()
 | |
|     while true do
 | |
|         Wait(0)
 | |
| 
 | |
|         local playerPed = PlayerPedId()
 | |
|         if IsPedShooting(playerPed) then
 | |
|             local weapon = GetSelectedPedWeapon(playerPed)
 | |
| 
 | |
|             if Config.rubberBulletWeapons[weapon] then
 | |
|                 local hit, entity = GetEntityPlayerIsAimingAt()
 | |
|                 if hit and IsEntityAPed(entity) and not IsPedAPlayer(entity) == false then
 | |
|                     TriggerServerEvent('cavok_weapon_handling:hitPlayer', GetPlayerServerId(NetworkGetPlayerIndexFromPed(entity)))
 | |
|                 end
 | |
|             end
 | |
|         end
 | |
|     end
 | |
| end)
 | |
| 
 | |
| function GetEntityPlayerIsAimingAt()
 | |
|     local result, entity = GetEntityPlayerIsFreeAimingAt(PlayerId())
 | |
|     return result, entity
 | |
| end
 | |
| 
 | |
| RegisterNetEvent('cavok_weapon_handling:makeRagdoll')
 | |
| AddEventHandler('cavok_weapon_handling:makeRagdoll', function()
 | |
|     local ped = PlayerPedId()
 | |
| 
 | |
|     local boneHit = 0
 | |
|     local success, bone = GetPedLastDamageBone(ped)
 | |
|     if success then
 | |
|         boneHit = bone
 | |
|     end
 | |
| 
 | |
|     local racdollTime = 1000
 | |
| 
 | |
|     for k, v in pairs(Config.RagdollTime) do
 | |
|         if boneHit == k then
 | |
|             racdollTime = v
 | |
|         end
 | |
|     end
 | |
| 
 | |
|     SetPedToRagdoll(ped, racdollTime, racdollTime, 0, false, false, false)
 | |
| end) | 
