Overview
This modified Qbox spawn menu helps stop players from falling through the map when they choose a normal location. It waits up to ten seconds for the map collision to load before showing the game again. Property spawns still use qbx_properties.
Requirements
- Framework
- qbx_core
- Required
- ox_lib and oxmysql
- Optional
- qbx_properties for owned-property spawns
- Database
- players table with stored position data
Installation
Place qbx_spawn in resources and keep the expected resource name.
Configure the enabled location names, positions, and directions in config/client.lua.
Start qbx_properties before qbx_spawn when owned properties should appear in the selector.
Test each location after a fresh connection. Check that the ground loads, the player faces the right direction, the screen fades in, and player-loaded events run on the live map build.
Configuration
Configure the spawn list
Edit config/client.lua to add, remove, or reorder label and vec4 entries. The current snapshot enables Paleto Bay, Sandy Shores, Legion Square, Mission Row, Vespucci Beach, and Grapeseed.
{ label = 'Legion Square', coords = vec4(195.17, -933.77, 29.7, 144.5) }Validate every coordinate
Use safe ground coordinates with the intended heading and verify that the production map build streams collision there. The ten-second wait reduces fall-through risk but cannot correct a bad destination.
Decide whether to expose property spawns
Start qbx_properties before qbx_spawn to list properties owned by the player. Keyholder-only properties are not included by the current server query.
Keep upstream updates manual
The manifest repository and version checker still point to Qbox-project/qbx_spawn. Review upstream changes against the custom client patch before replacing files.
How to use and test it
Test a fresh connection
Join with a character that has a saved position, move through every configured map option, select a normal coordinate, and confirm collision loads before the screen fades in.
Test repeated selector setup
Open the flow with multiple characters or reconnects and confirm the selected button resets to the first entry rather than keeping a stale index.
Validate property entry separately
Select an owned property and confirm qbx_properties handles the interior entry. The new collision-wait helper is intentionally not used on that path.
Troubleshooting
A player still falls through at one spawn
Validate that coordinate against the active map and collision files. The helper waits up to ten seconds and is a mitigation, not a guarantee for invalid or slow custom-map locations.
Property destinations are missing
Confirm qbx_properties starts first, the properties table exists, and the current character owns a property. The query does not include properties held only through keys.
Last location cannot be read
Confirm qbx_core resolves the player, oxmysql is running, and the players row contains valid JSON position data for the character's citizen ID.
An upstream update removes the mitigation
The version checker targets the upstream Qbox repository. Compare client/main.lua before applying an update and preserve the collision helper and selection reset intentionally.
Reference
- The fork is exactly one custom commit ahead of the audited upstream main branch and keeps manifest version 0.1.1.
- Collision-aware placement applies to ordinary coordinates only; property spawns use qbx_properties.
- The repository README image is an expired Discord CDN asset and is not used on this site.
- This GPL-3.0 fork retains Qbox Project attribution and should be treated as a repository snapshot rather than a tagged release.