-
-
Notifications
You must be signed in to change notification settings - Fork 803
fix: deferral formatting, callback safety, job counters, spawn heading nil #1726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
MaitreAntho
wants to merge
29
commits into
esx-framework:main
Choose a base branch
from
MaitreAntho:patch-1
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+5,991
−1,173
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This reverts commit 45308f5.
Apparently, passing leading nil values via an export breaks it entirely.
feat: add auto-migrations on startup
…ment-isValid-on-register-command add a new argument on the register command feature
feat(esx_menu_default) Redesign of the menu.
fix(esx_menu_default): remove debug print
…g nil - Show player identifier in deferral update message. - Ensure server callbacks always invoke cb (avoid client awaits hanging). - Guard JobsPlayerCount and GlobalState.playerCount against nil/underflow. - Prevent nil access to coords.w in esx:spawnVehicle when coords is missing.
## What
- Fix missing placeholder in `deferrals.update` so the player identifier is displayed in the deferral UI.
- Ensure server callbacks (`esx:getPlayerData`, `esx:getOtherPlayerData`, `esx:getPlayerNames`) always invoke `cb` instead of early-returning, preventing client awaits from hanging.
- Harden job counters: always initialize and update `Core.JobsPlayerCount` safely on load/setJob/drop; guard `GlobalState.playerCount` against nil and underflow.
- Avoid a potential crash in `esx:spawnVehicle` by not accessing `vehData.coords.w` when `vehData.coords` is nil.
## Why
- Better UX during connection (deferral message shows real identifier).
- More robust callbacks (no silent hangs when a player object is unavailable).
- Stable job/player counters during fast connect/disconnect and job switches.
- Reliable vehicle spawns whether or not a heading/coords is provided.
## How
- Add `%s` placeholder to the deferral message.
- Return `cb(nil)` when `xPlayer` is missing; default to `cb(players or {})` for names.
- Introduce `ensureJobCounter(jobName)` and use it in `playerLoaded`, `setJob`, and `onPlayerDropped`. Clamp `GlobalState.playerCount` with a safe default and `math.max`.
- In `esx:spawnVehicle`, compute `spawnCoords` and `heading` with safe fallbacks.
## Backwards compatibility
- No API changes. Purely defensive fixes; behavior is backward-compatible.
## Tests
1. **Deferral formatting**: connect with an account already “active” → deferral UI displays the identifier.
2. **Callbacks**: call `esx:getPlayerData`/`esx:getOtherPlayerData` while the target disconnects; clients receive a response (no hang).
3. **Counters**: connect → change job → disconnect quickly; observe no errors and coherent `Core.JobsPlayerCount` and `GlobalState["playerCount"]` (never negative).
4. **Vehicle spawn**: call `esx:spawnVehicle` with and without `vehData.coords`. No crash; if `coords` includes `w`, heading is applied.
## Notes
- Minimal surface change, easy to review, focused on stability and DX quality.
- Restored original implementation of esx:spawnVehicle callback to keep this PR focused on job counter improvements. Vehicle spawn fallback handling will be addressed in a separate pull request. - Moved ensureJobCounter to the top of server/main.lua to ensure it is defined before being used in player/job related events.
|
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
deferrals.updateso the player identifier is displayed in the deferral UI.esx:getPlayerData,esx:getOtherPlayerData,esx:getPlayerNames) always invokecbinstead of early-returning, preventing client awaits from hanging.Core.JobsPlayerCountsafely on load/setJob/drop; guardGlobalState.playerCountagainst nil and underflow.esx:spawnVehicleby not accessingvehData.coords.wwhenvehData.coordsis nil.Why
How
%splaceholder to deferral message.cb(nil)whenxPlayeris missing; default tocb(players or {}).ensureJobCounter(jobName)and use it inplayerLoaded,setJob,onPlayerDropped.GlobalState.playerCountand computespawnCoords/headingsafely.Backwards compatibility
Tests
coords→ no crash; heading applied when provided.