Whenever I handle input I usually go about it in StarterPlayerScripts not the character. I also recommend when I started using inputs I would have the function go in either to ways for attacks: Have the attack go only on an InputEnded function. Or I would have the attack keep going if you held the input in.
i would put it in StarterPlayerScripts but im not sure why i would
i make a normal script in the character, then a local script inside of that for handling everything character related on the client which ended up including inputs
I would say that’s perfectly fine if it works for you. I usually have remote events in replicatedStorage which would get .OnServerEvent from the SSS to lower the number of total scripts in the game and minimize code depending on how many fighting characters you may have (unless every character has the same attacks).
I’m only recommending it cause when I did a system like that I would also have to change the main server script for every single fighter every time I wanted to make a larger game change so it gave me more room for optimization.