How do I check if a value in ServerStorage is changed?

I have some player stats in server storage, and I want to be able to run code on the player’s client whenever their stats change, kind of like how GetPropertyChangedSignal works. The problem is, scripts don’t run in server storage. My only other guess would be to check for a change across every stat in every player’s data folder and then find the name from the folder and call the functions, but this seems like WAY overdoing it and very inefficient, and I figured there had to be a better way.
For context:
image
For example, when a player’s EquippedPersona.Value changes, fire a remote event towards the client to bind their moveset to that specific Persona’s.

1 Like

you can not access the ServerStorage from any local script so you have 2 options :-
1 : change the place of the folder to some where else like ReplicatedStorage
2 : connect to the .Changed event from a server script and then fire a remote event to the client or just manage it all in a server script , and do not use GetPropertyChangedSignal with value because Value.Changed event only fires when the value of the instance change and GetPropertyChangedSignal may not fire if you change the value very frequently

  1. I don’t want to change it to replicated storage, as I thought it was better/safer to keep player stats in server storage.
  2. I can’t use .Changed directly without connecting it to every single player stat value and checking for a change across all of them, which feels highly inefficient.
    Is there really nothing else I can do? Is player stats being in replicated storage not as bad as I think? Is checking for change across every single value not as inefficient as I think?
1 Like

putting any value in replicated storage is completely safe if you do not use remote events to change any if these value and if you do just send the name of the value to the server do not send the value it self because exploiters can access the client side and fire the remote event to set any of these value to any value they want , also if you have something like maps put them in the serverstorage if you do not need them in the client because these maps will take space from the client memory

you are right it is bad to connect to many event , what you can do is just handle it from the server when you change the value , for example :- when the player changes his character do not just change the value change the value and the character from the same script