Oh, then that's fairly simple. Just use something like:
if ( dbDownKey() && IsOnGround ) //IsOnGround is not a DGDK function. You'll need to have a platformer engine first...
{
dbPlaySprite ( yoursprite, startframe, endframe, delay );
}
else
{
//Standard motion/control code.
}
I'm assuming by now you have some sort of platform movement set up, but if you don't, you should probably focus on that first. Sure, this will work fine if you remove the "IsOnGround" variable, but to properly "crouch," you have to be able to check if the player is on the ground or not (It wouldn't make sense to be able to crouch in mid-air, would it?). And if the player is NOT crouching, then the standard motion control would be available again. The aforementioned code is not the ONLY way to do this (And probably not the best way, either), but this is the kind of logic you'll need to think about as a budding programmer. I can help you write platformer code, but ONLY if you try doing it yourself first. I'm not gonna hold your hand through the entire game design process.
Drink a few coffees, read some design articles, and make yourself a platformer engine. If you fail, I'll be more than happy to help. You can't learn if you have others do the work for you! (A lesson I learned the hard way when I used PAlib years ago...
)
EDIT: On reading your first post again, I noticed how you worded that you wanted to play "one animated sprite over another." Are you seperating all of your animations (running, jumping, waling, crouching) into seperate sprite images? Quick fix: Put all of the frames into the same image file (make sure they're evenly spaced!). Then you can simply use dbCreateAnimatedSprite(...) to make the sprite animated. Then you can use dbPlaySprite(...) and dbSetSpriteFrame(...) to change images.
It's been fun: So long, TGC!