When parenting a script to StarterCharacterScripts it will only show up after the player’s character has been loaded, so running plr.CharacterAdded inside of that kind of script will never really process anything. In theory you could just remove the PlayerAdded, and CharacterAdded functions and the char.Animate lines will process when the player’s character is loaded
char.Animate.walk.WalkAnim.AnimationId = "rbxassetid://14490337008" --CHANGE ANIMS
char.Animate.idle.Animation1.AnimationId = "rbxassetid://14490292025"
char.Animate.idle.Animation2.AnimationId = "rbxassetid://14490292025"
char.Animate.jump.JumpAnim.AnimationId = "rbxassetid://14490288593"
char.Animate.fall.FallAnim.AnimationId = "rbxassetid://14490284229"
Are you doing the touched event in a local script, or inside of a server script?
I gather that it’s inside of a server script since the script itself seems to reference the part being touched a script.Parent. My only concern with doing what I’ve suggested is that it’d give all of your players the new animations, instead of just the players whom touched the part. What you’ll need to do is basically setup somewhere to let the script know that it should take these new animations based on if the player has in the past ever touched the part.
Inside of your script that performs the Touched Event, you can put in a table of players who have touched the part, and then setup a listener for if the player’s character gets reloaded.
I don’t believe this would be your most effective and performant way of doing this. I’d personally look at testing to see if applying the animation IDs work on a local script, like inside the StarterCharacterScript section, and if that does work (since it’s a local script vs server script, we want to verify that functionality does work, otherwise we need to make some modifications). If that does work, then you could make the Touched Event instead trigger a remote event, and then have a local script that listens to that event. The local script should be saved inside the StarterPlayerScripts so that it persists through death, and not reloads every time the player dies. Now inside of this local script, you have a variable that is just yes or no, that script should listen for character added, not player added since it’s always loaded on that player, and then inside of the character added function of that script, you would check if that variables and apply your animations based on the output of that variable, and the remote event listener inside of this script would change the value of the variable from no to yes once it’s triggered.
Sorry, I know this is a lot of information, especially for someone new. I can help you further if that doesn’t make sense