Create a variable that stores the different commands.
Maybe this is a bit complicated, but its off the top of my head.
Have a variable which counts down, lets call it V:Time.
Then have variables for each action, punch, jump, kick etc...
The Time value is constantly counting down.
When ever a key is pressed, V:Time is set to 5.
If punch is presses set V:Punch to +1
If another action is then pressed, for each action variable greater than 1, add 1, as well as adding to that action variable.
-----------
To demonstrate:
V:Time = 0
V:Punch = 0
V:Kick = 0
V:Jump = 0
Punch is pressed
V:Time = 5
V:Punch = 1
V:Kick = 0
V:Jump = 0
Punch is pressed again withing 5 seconds (Before V:Time =<0)
V:Time = 5
V:Punch = 3
V:Kick = 0
V:Jump = 0
Kick is pressed within 5 seconds
V:Time = 5
V:Punch = 4
V:Kick = 1
V:Jump = 0
Jump is pressed within 5 seconds
V:Time = 5
V:Punch = 5
V:Kick = 2
V:Jump = 1
Kick is pressed within 5 seconds
V:Time = 5
V:Punch = 6
V:Kick = 4
V:Jump = 2
Special move:
If shift is pressed and (V:Punch = 6) (V:Kick = 4) (V:Jump = 2) Perform special move XYZ
The V:Time is just to make sure the combo is done within the time, if V:Time ever =0 then reset all the other values.
---------------
Or something there abouts.