player.CharacterAppearanceLoaded:Connect(function(character) doesn't work on client

It’s simple as that. I have the client overriding some properties of all the characters locally and it works fine for all R6 and R15 1.0s (rigs without special bodyPart meshes) becasue they are state final when their baseParts are added as children. But due to a 3.0 joining the game as an R15, his character follows the caveat dynamic discussed in post: https://devforum.roblox.com/t/what-is-guaranteed-to-be-there-on-characteradded/42431
so what I set doesn’t last and it is game breaking because I am setting collisions on the characters.

TL;DR: I need a clean way to know when a character is finished loading, locally

1 Like

havent really tested this, but give it a try and see what happens:

local player  = game.Players.LocalPlayer

if not player:HasAppearanceLoaded() then
    player.CharacterAppearanceLoaded:Wait()
end

--rest of the code

Heres another way, but i wouldnt say its clean

repeat wait() until player:HasAppearanceLoaded() == true

2 Likes

This waits indefinitely unfortunately

What did you end up doing?

Something better than this?

Not your explicit use case probably,

but I ended up just doing descendantAdded functionality and handling each handed up instance on that unit basis. This is like reappropriating accessories to meshparts for material support, and outline-inverting identifiable-as-body-part baseparts.

Side note: I am a bit surprised you can reference use CAL, given you cannot connect to it, on client side. Go you for trying and succeeding with that one. And you can always bind it to one of the task schedule phases if its real priority keeping with your implementation ig.

1 Like