[FREE][QB/ESX/QBX] bostra_poledance Pole and Erotic Dancing

Pole / Erotic Dancing script.

Features

  • Target or Zone text ui supported
  • 3 unique pole dances
  • 6 enticing lap dances
  • Job locks with target
  • Dynamic tool for creating new poles
  • Easy new location adding

Dependencies

  • ox_lib
  • ox or qb target (If using target and not ox_lib zones)

Installation

  1. Drag the bostra_poledance folder into your resources.
  2. Ensure ox_lib, and the target resource (if in use) before bostra_poledance.
  3. newpole admin command creates a pole and copys the pole coordinates to your clipboard, paste it in your config if you want it permanent.

Preview

Download

Known Issues

  • Spawned props duplicate target options, scene coords could be better…

Credits

  • Raycast Code as I couldn’t get lib raycast to work how I wanted (RoyaleWind)
9 Likes

This is beautiful!

2 Likes

Here’s the link for people who would like to download it :eyes:

Cheers !

2 Likes

This is beautiful!

2 Likes

Shoot, thanks! Late night no brain moments lol.

1 Like

gyaaattttt

1 Like

Thanks so much for an awesome script! I love that this works with the pole’s that can be placed into the furniture catalog!

1 Like

Thanks! The positioning could probably use a little refining.
Updated: I added to the repo adding the prop to ps-housing as well if anyone needs it.

seems the only way to cancel the emote is with another emote?

1 Like

Correct or your own emote menus cancel animation. /e c in most menus. I figured they’re pretty universal and it would be annoying trying to add that functionality to the target support. I could easily do it for the lib zones though.

/e c doesnt even work, neither does putting your hands up etc.

That is how I cancel it myself in the preview, I just have it bound to keymapping. Can you join the support on the GitHub for further help investigating the issue?

Any update on canceling the emote with a key or through the menu itself?

You can always edit the code to your likening and add code to end the emote

    local position = GetEntityCoords(PlayerPedId())
    local usePolePosition = false
    local scenarioDuration = 30000 -- Set the duration in milliseconds (30 seconds in this example)

    if not args.coords then args.coords = position end

    if args.dance then
        local nearbyObjects = lib.getNearbyObjects(args.coords, 1.5)
        if #nearbyObjects > 0 then
            local closestObject = nearbyObjects[1]
            local scene = NetworkCreateSynchronisedScene(closestObject.coords.x + 0.07, closestObject.coords.y + 0.3,
                closestObject.coords.z + 1.15, 0.0, 0.0, 0.0, 2, false, true, 1065353216, 0, 1.3)
            NetworkAddPedToSynchronisedScene(PlayerPedId(), scene, 'mini@strip_club@pole_dance@pole_dance' .. args.dance,
                'pd_dance_0' .. args.dance, 1.5, -4.0, 1, 1, 1148846080, 0)
            NetworkStartSynchronisedScene(scene)

            -- Automatically end the emote after a certain duration
            Citizen.Wait(scenarioDuration)
            TaskLeaveAnyScenario(PlayerPedId())
        else
            usePolePosition = true
        end
    elseif args.lapdance then
        lib.requestAnimDict(args.dict)
        TaskPlayAnim(PlayerPedId(), tostring(args.dict), tostring(args.anim), 1.0, 1.0, -1, 1, 0, 0, 0, 0)

        -- Automatically end the emote after a certain duration
        Citizen.Wait(scenarioDuration)
        TaskClearAll(PlayerPedId())
    else
        for _, point in ipairs(polePoints) do
            if IsPlayerNearCoords(position, point.coords, point.distance) then
                usePolePosition = true
                break
            end
        end
    end```

```    if usePolePosition then
        local closestPoint = lib.points.getClosestPoint()
        if closestPoint then
            if Config.Debug then print('Close') end
            args.coords = closestPoint.coords

            local scene = NetworkCreateSynchronisedScene(args.coords.x + 0.07, args.coords.y + 0.3,
                args.coords.z + 1.15, 0.0, 0.0, 0.0, 2, false, true, 1065353216, 0, 1.3)
            NetworkAddPedToSynchronisedScene(PlayerPedId(), scene, 'mini@strip_club@pole_dance@pole_dance' .. args.dance,
                'pd_dance_0' .. args.dance, 1.5, -4.0, 1, 1, 1148846080, 0)
            NetworkStartSynchronisedScene(scene)

            -- Automatically end the emote after a certain duration
            Citizen.Wait(scenarioDuration)
            TaskLeaveAnyScenario(PlayerPedId())
        else
            if Config.Debug then print('Not close') end
        end
    end
end)```
2 Likes

Updated to support canceling the emote while using lib zones. That is the only optimal way I’d like to approach that.

1 Like

Additional updates include optimizations and fixes!

1 Like

can you make it work without any target script?

It does currently with E keystroke draw text. Set it to use lib

Great script, however in some Gabz maps the interior disappears when starting a dance. In my case it was the Bahama Mama’s from Gabz. Any idea why?

pole dancing emotes not working if the pole is make outside the vanilla interior, any help fixing that?