# QBCore Compatibility

## Step 1: Find&#x20;

`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.

```lua
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.

```lua
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`.

{% file src="/files/EU9OvkkOvLGJBiVaFueq" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.rainmad.com/resources/throw-everything/qbcore-compatibility.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
