Commit Graph
214 Commits
Author SHA1 Message Date
_Not_ 7ff9ed90d1 Merge pull request #1829 from seltonmt012/fix/multichar-local-player
fix(esx_multicharacter/client): act on the local player in HideHud
2026-08-14 19:46:24 -05:00
_Not_ 9d885edc5b Merge pull request #1830 from seltonmt012/fix/multichar-hud-restore
fix(esx_multicharacter/client): restore the stored height of hidden hud components
2026-08-14 19:45:47 -05:00
_Not_ 8d389520f9 Merge pull request #1833 from seltonmt012/perf/multichar-select-index
perf(esx_multicharacter): look up characters by exact identifier instead of LIKE
2026-08-14 19:44:20 -05:00
Selt 760f31eb6c fix(esx_multicharacter): correct the chin_3 typo in the default skins
Both default skins spell the chin width key chin_13. skinchanger only
knows chin_1 through chin_4, so the value never reaches the ped and the
key is stored as junk in users.skin.

It also breaks the ped. SetFace reads every feature through
Normalise(weight, 10), which divides, so a missing chin_3 raises
"attempt to perform arithmetic on a nil value" at feature index 17.
Everything after that in ApplySkin is skipped: the remaining features,
the eye colour, the head overlays, the components and the props.
2026-07-30 01:50:20 +02:00
Selt e9d5cc9f8d perf(esx_multicharacter): look up characters by exact identifier instead of LIKE
The character selection query used `WHERE identifier LIKE 'char%:<license>'`. Every
multicharacter identifier starts with `char`, so the primary key range covers the whole
table and it degrades to a full scan on every join.

Build the exact identifiers (`char1:<license>` .. `charN:<license>` for the player's
slots) and query with `IN`, which hits the primary key directly.

Measured on a 50k row users table (MariaDB 12.3.2): rows examined 45648 -> 3, query
time 52.7 ms -> 3.2 ms. In-game the selection screen shows the same characters in the
same slots.
2026-07-27 18:34:10 +02:00
Selt 48154495f8 fix(esx_multicharacter/client): act on the local player in HideHud
ESX.PlayerId does not exist - the shared object only defines ESX.playerId,
and these were the only two places in the repo using the capitalised name.
The nil is passed to the natives as player index 0, so neither call touched
the local player. SetPlayerControl at line 266 already used the correct
spelling, which is why controls were re-enabled after spawning but never
disabled during character selection.

Measured on artifact 25770, local player index 128:
  SetPlayerControl(ESX.PlayerId, false, 0) -> IsPlayerControlOn stays 1
  SetPlayerControl(ESX.playerId, false, 0) -> IsPlayerControlOn becomes false

HideHud also ignored its argument: hidePlayers was hardcoded to true and the
volume override was set to 0.0 for both hiding and unhiding. Correcting only
the name would have made the mute apply for the first time and never lift it,
so the reset value and the argument have to be handled together.
2026-07-27 16:17:29 +02:00
Selt 2a6ec4c7d4 fix(esx_multicharacter/client): restore the stored height of hidden hud components
HideComponents stores the value GetHudComponentSize returns and reads back
size.x and size.z when restoring, but the meaningful fields are x and y - the
hide branch a few lines above tests exactly those. size.z is 0.0, so the
components are restored at height zero and stay invisible for the rest of the
session.

Measured on artifact 25770 after character selection, components 11 and 12:
  before: x=0.218 y=0.000  (width restored, height lost)
  after:  x=0.218 y=0.389
2026-07-27 16:17:29 +02:00
ASTROWwwW 511f5fc74e chore: bump manifest version to 1.14.0 2026-07-18 16:58:18 +02:00
Arctos. de98981ea6 Change domains 2026-05-25 12:12:51 +02:00
zykem#0643 efedf3c303 chore: bump manifest version to 1.13.5 2026-05-08 11:30:59 +02:00
Mirow e7eafd6148 fix(web): display correct gender 2025-10-01 22:16:13 -05:00
Manifest Bumper 69fe76ca38 chore: bump manifest version to 1.13.4 2025-10-01 22:16:13 -05:00
Manifest Bumper 73ccea1b4e chore: bump manifest version to 1.13.3 2025-08-19 22:39:13 +00:00
Manifest Bumper 224d06fad2 chore: bump manifest version to 1.13.2 2025-08-13 15:34:40 +00:00
Manifest Bumper 830c567cfd chore: bump manifest version to 1.13.1 2025-08-02 11:09:55 +00:00
Kr3mu a5015b8694 Added pcall for checking player identifier 2025-08-01 11:57:04 +02:00
Kenshin13 b9d735ceca Merge pull request #1675 from Zykem/feature/optional-identifier-type
feat(esx_core) Add optional player identifier type.
2025-08-01 11:15:10 +02:00
Kenshin13 3d6b3263ab Merge branch 'main' into dev 2025-07-27 19:55:34 +02:00
zykem 9d11780816 Update multicharacter.lua 2025-07-26 20:24:53 +02:00
Kr3mu 85ad455645 Replaced old image of esx_multicharacter 2025-07-26 20:12:49 +02:00
zykem afcce2d1a9 Update multicharacter.lua 2025-07-26 19:45:26 +02:00
zykem 83835b4ec1 Update database.lua 2025-07-26 19:45:01 +02:00
zykem d9becc9cb4 Update functions.lua 2025-07-26 19:44:28 +02:00
zykem 36a69f2c81 Validate player identifier in ResetPlayers function 2025-07-26 19:38:19 +02:00
zykem e315272e48 Validate player identifier in DeleteCharacter function 2025-07-26 19:36:11 +02:00
Manifest Bumper 3a9e0f316e chore: bump manifest version to 1.13.0 2025-07-26 17:05:56 +00:00
Manifest Bumper 72a1397823 chore: bump manifest version to 13.13.0 2025-07-26 17:04:08 +00:00
Kenshin13 b41953c007 Merge pull request #1673 from Mr-Snaeky/Mr-Snaeky-patch-1
Create ar.lua
2025-07-21 22:23:38 +02:00
zykem#0643 7417454478 Use key argument for ESX.GetConfig 2025-07-21 01:29:47 +02:00
zykem#0643 3a63fb9771 Replace Server:GetIdentifier with ESX.GetIdentifier 2025-07-21 01:29:31 +02:00
zykem#0643 38d4b089bf Remove Server:GetIdentifier 2025-07-21 01:27:24 +02:00
Mr-Snaeky c433ed1da7 Create ar.lua
Added Arabic localization for character selection system.
2025-07-18 21:23:06 +02:00
Kenshin13 84f10fd176 Merge pull request #1661 from Zykem/feat/nuiready-await
fix(esx_multicharacter): Await nuiReady before setting up characters
2025-07-13 13:02:26 +02:00
zykem#0643 3a8bd5dc70 Changed NuiReady to camelCase 2025-07-06 16:15:07 +02:00
Kenshin13 e08c941864 fix: DoesPlayerExist doesnt seem to work properly. Also fix stale cb in onPlayerDropped 2025-07-06 13:32:47 +02:00
Kenshin13 70a10383a7 fix(esx_multicharacter/): Cleanup stale player entries 2025-07-06 12:53:18 +02:00
zykem#0643 7402208268 Await nuiReady before setting up characters 2025-07-06 11:46:57 +02:00
Kenshin13 7ce03c38ce Merge pull request #1640 from Tabby-Labs/dev
(fix): failed to reconnect after client crashed
2025-06-15 18:57:13 +02:00
Kenshin13 e1597110db fix(esx_multicharacter/server/modules/functions): build proper identifier 2025-06-15 14:05:10 +02:00
Kenshin13 e524ed13af fix(esx_multicharacter/server/modules/functions): mark palyer as connected on cleanup 2025-06-15 13:34:18 +02:00
Kenshin13 834e6d5cba fix(esx_multicharacter/server/modules/functions): store formatted identifier 2025-06-15 13:02:47 +02:00
Kenshin13 822dbf1dae refactor(esx_multicharacter/server/modules/functions): fix deferral prefix 2025-06-15 12:57:17 +02:00
Kenshin13 130754dcd2 refactor(esx_multicharacter/server/modules/functions): properly cleanup stale player obj 2025-06-14 21:06:19 +02:00
Kasey Fitton 287be3bb9b Merge: refactor(esx_multicharacter): complete UI/Backend overhaul
refactor(esx_multicharacter): complete UI/Backend overhaul
2025-06-12 12:03:35 +01:00
Muhammed Yaseen 87e13f3835 Locales 2025-05-23 08:47:56 +05:30
Tabby Dev 2cb6531f82 refactor(esx_multicharacter/server/modules/functions): use 'esx:playerCrashed' for consistency 2025-05-22 19:17:24 +08:00
Muhammed Yaseen 0b0fd23444 ESX_MULTICHARACTER 2025-05-22 12:44:39 +05:30
Tabby Dev 3a68968e9a fix(esx_multicharacter/server/modules/functions): fix failed to reconnect after client crashed 2025-05-20 09:45:16 +08:00
Kenshin13 34a5c00b5b fix(esx_multicharacter/server/modules/database): fix conn string parser 2025-02-03 17:03:24 +01:00
Manifest Bumper 74e76ed613 chore: bump manifest version to 1.12.4 2025-01-23 21:29:23 +00:00