QBCore Compatibility

If you are using qb-core and qb-smallresources you should do the following steps

Step 1: Find

qb-smallresources/client/weapdraw.lua

or

qb-weapons/client/weapdraw.lua

Open this file with Notepad++ or VSCode.

Step 2: Add Function

Find an empty space and paste the code block below.

rmThrow = function(weapon)
	if GetResourceState("rm_throw") and GetResourceState("rm_throw") == "started" then
		if weapon == "item" and exports["rm_throw"]:useItem() then
			return false
		end
		
		if weapon == GetHashKey("WEAPON_SNOWBALL") then
			return false
		end

		if exports["rm_throw"]:useItem() then
			return false
		end
	end

	if GetResourceState("rm_weaponv") and GetResourceState("rm_weaponv") == "started" then
		return weaponState
	end

	return true
end

Step 3: Find weapons:client:DrawWeapon Event

Find this weapons:client:DrawWeapon event in the file and replace it with the block of code below.

RegisterNetEvent('weapons:client:DrawWeapon', function()
    if GetResourceState('qb-inventory') == 'missing' then return end -- This part is only made to work with qb-inventory, other inventories might conflict
    local sleep
    local weaponCheck = 0
    while true do
        local ped = PlayerPedId()
        sleep = 250
        if DoesEntityExist(ped) and not IsEntityDead(ped) and not IsPedInParachuteFreeFall(ped) and not IsPedFalling(ped) and (GetPedParachuteState(ped) == -1 or GetPedParachuteState(ped) == 0) then
            sleep = 0
            if currWeap ~= GetSelectedPedWeapon(ped) then
                local pos = GetEntityCoords(ped, true)
                local rot = GetEntityHeading(ped)

                local newWeap = GetSelectedPedWeapon(ped)
                if rmThrow(newWeap) then
                    SetCurrentPedWeapon(ped, currWeap, true)
                    loadAnimDict('reaction@intimidation@1h')
                    loadAnimDict('reaction@intimidation@cop@unarmed')
                    loadAnimDict('rcmjosh4')
                    loadAnimDict('weapons@pistol@')

                    local holsterVariant = GetPedDrawableVariation(ped, 8)
                    wearingHolster = false
                    for i = 1, #Config.WeapDraw.variants, 1 do
                        if holsterVariant == Config.WeapDraw.variants[i] then
                            wearingHolster = true
                        end
                    end

                    if checkWeapon(newWeap) then
                        if holstered then
                            if wearingHolster then
                                --TaskPlayAnim(ped, 'rcmjosh4', 'josh_leadout_cop2', 8.0, 2.0, -1, 48, 10, 0, 0, 0 )
                                canFire = false
                                CeaseFire()
                                currHolster = GetPedDrawableVariation(ped, 7)
                                currHolsterTexture = GetPedTextureVariation(ped, 7)
                                TaskPlayAnimAdvanced(ped, 'rcmjosh4', 'josh_leadout_cop2', pos.x, pos.y, pos.z, 0, 0, rot, 3.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(300)
                                SetCurrentPedWeapon(ped, newWeap, true)

                                if isWeaponHolsterable(newWeap) then
                                    SetPedComponentVariation(ped, 7, currHolster == 8 and 2 or currHolster == 1 and 3 or currHolster == 6 and 5, currHolsterTexture, 2)
                                end
                                currWeap = newWeap
                                Wait(300)
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            else
                                canFire = false
                                CeaseFire()
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@1h', 'intro', pos.x, pos.y, pos.z, 0, 0, rot, 8.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(1000)
                                SetCurrentPedWeapon(ped, newWeap, true)
                                currWeap = newWeap
                                Wait(1400)
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            end
                        elseif newWeap ~= currWeap and checkWeapon(currWeap) then
                            if wearingHolster then
                                canFire = false
                                CeaseFire()

                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@cop@unarmed', 'intro', pos.x, pos.y, pos.z, 0, 0, rot, 3.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(500)

                                if isWeaponHolsterable(currWeap) then
                                    SetPedComponentVariation(ped, 7, currHolster, currHolsterTexture, 2)
                                end

                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                currHolster = GetPedDrawableVariation(ped, 7)
                                currHolsterTexture = GetPedTextureVariation(ped, 7)

                                TaskPlayAnimAdvanced(ped, 'rcmjosh4', 'josh_leadout_cop2', pos.x, pos.y, pos.z, 0, 0, rot, 3.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(300)
                                SetCurrentPedWeapon(ped, newWeap, true)

                                if isWeaponHolsterable(newWeap) then
                                    SetPedComponentVariation(ped, 7, currHolster == 8 and 2 or currHolster == 1 and 3 or currHolster == 6 and 5, currHolsterTexture, 2)
                                end

                                Wait(500)
                                currWeap = newWeap
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            else
                                canFire = false
                                CeaseFire()
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@1h', 'outro', pos.x, pos.y, pos.z, 0, 0, rot, 8.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(1600)
                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@1h', 'intro', pos.x, pos.y, pos.z, 0, 0, rot, 8.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(1000)
                                SetCurrentPedWeapon(ped, newWeap, true)
                                currWeap = newWeap
                                Wait(1400)
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            end
                        else
                            if wearingHolster then
                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                currHolster = GetPedDrawableVariation(ped, 7)
                                currHolsterTexture = GetPedTextureVariation(ped, 7)
                                TaskPlayAnimAdvanced(ped, 'rcmjosh4', 'josh_leadout_cop2', pos.x, pos.y, pos.z, 0, 0, rot, 3.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(300)
                                SetCurrentPedWeapon(ped, newWeap, true)

                                if isWeaponHolsterable(newWeap) then
                                    SetPedComponentVariation(ped, 7, currHolster == 8 and 2 or currHolster == 1 and 3 or currHolster == 6 and 5, currHolsterTexture, 2)
                                end

                                currWeap = newWeap
                                Wait(300)
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            else
                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@1h', 'intro', pos.x, pos.y, pos.z, 0, 0, rot, 8.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(1000)
                                SetCurrentPedWeapon(ped, newWeap, true)
                                currWeap = newWeap
                                Wait(1400)
                                ClearPedTasks(ped)
                                holstered = false
                                canFire = true
                            end
                        end
                    else
                        if not holstered and checkWeapon(currWeap) then
                            if wearingHolster then
                                canFire = false
                                CeaseFire()
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@cop@unarmed', 'intro', pos.x, pos.y, pos.z, 0, 0, rot, 3.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(500)

                                if isWeaponHolsterable(currWeap) then
                                    SetPedComponentVariation(ped, 7, currHolster, currHolsterTexture, 2)
                                end

                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                ClearPedTasks(ped)
                                SetCurrentPedWeapon(ped, newWeap, true)
                                holstered = true
                                canFire = true
                                currWeap = newWeap
                            else
                                canFire = false
                                CeaseFire()
                                TaskPlayAnimAdvanced(ped, 'reaction@intimidation@1h', 'outro', pos.x, pos.y, pos.z, 0, 0, rot, 8.0, 3.0, -1, 50, 0, 0, 0)
                                Wait(1400)
                                SetCurrentPedWeapon(ped, `WEAPON_UNARMED`, true)
                                ClearPedTasks(ped)
                                SetCurrentPedWeapon(ped, newWeap, true)
                                holstered = true
                                canFire = true
                                currWeap = newWeap
                            end
                        else
                            SetCurrentPedWeapon(ped, newWeap, true)
                            holstered = false
                            canFire = true
                            currWeap = newWeap
                        end
                    end
                end
            end
        end
        Wait(sleep)
        if currWeap == nil or currWeap == `WEAPON_UNARMED` then
            weaponCheck += 1
            if weaponCheck == 2 then
                break
            end
        end
    end
end)

Additional

If you cannot make this change correctly, you can download the file below and replace it with qb-smallresources/client/weapdraw.lua.

Last updated