You could create 4 events (on gamepad 1 pressed, 2, 3, etc ) that checks which "start" button was pressed, then assign that player an ID. Also make a variable that gets assigned the gamepad number who's button was pressed.
Then create one function for all of your inputs. You pass the button that was pressed (gamepad.lastbutton) And you pass the gamepad number that presseed it (the variable from before)
there fore each time a button is pressed, the function uses who pushed it and which button, then updates the associated player with whatever he's supposed to do. (Pick by evalulate, player.ID = function.param(0))
then you only have one function, to handle all player movement etc for all players, thus only having to write it once.