So... you're asking for help with something that doesn't exist? Go back and make it as well as you can and come back when you're really stumped again. We can't really help with nothing.
To get you started though, I might have figured out the problem based on what you've said. In theory, you have it so that it checks what the sprite is when you attack and then attacks again accordingly, but somehow it always does the triple attack instead of just one. Odds are you coded yourself a trap. Picture it this way:
Let's assume the code is something like this:
When you push 'z':
if Link has a normal sprite{
change the sprite to the first attack
}
if Link has the first attack sprite{
change the sprite to the second attack
}
if Link has the second attack sprite{
change the sprite to the third attack
}
Now, if that's the case, it's something that looks like it should be right, but it's not quite there yet. If you read through it carefully, you'll find the flaw. First, it checks if the sprite is an attacking one. if it's not, it starts the first attack. Then it checks if you're doing the first attack. If you are it starts the second attack, and so on and so forth. The problem is, GameMaker, just like any program, is stupid. It doesn't know what you want so it doesn't stop when it's acheived your goal. It's going to go through that whole block of code. So after you've started the attack it goes to check for the second attack whether you want it to or not. The problem is that you've just set it to attack, so no matter what it's going to find the next statement true and start the next attack. It'll do the same thing for the third. There's nothing that tells it to stop. Or is there? There is indeed a magic piece of code that will save you! if you type "break" inside each "if" statement at the end, as soon as it hits that it'll jump out of the event and stop thinking about what to do with the "z" button. Then, the next time you push it, it'll bypass the first "break" since the first statement isn't true and go on straight to the second, stopping after that one's "break". The working code would look something like this:
When you push 'z':
if Link has a normal sprite{
change the sprite to the first attack
break;
}
if Link has the first attack sprite{
change the sprite to the second attack
break;
}
if Link has the second attack sprite{
change the sprite to the third attack
break;
}
Of course, you would have to replace all the other !@#$% (besides "break") there with real code. The alternative to that is a Switch/Case statement, which you can read up in the manual (since I don't want to explain it).