(See the best response by Kaiochao.)
mob/wolf/verb/toss_bomb(n as int){
if( usr.dir == 1 ){
burst(usr.x, usr.y+3, usr.z);
}else if( usr.dir == 2 ){
burst(usr.x, usr.y-3, usr.z);
}else if( usr.dir == 4 ){
burst(usr.x+3, usr.y, usr.z);
}else if( usr.dir == 8 ){
burst(usr.x-3, usr.y, usr.z);
burst(usr.x, usr.y, usr.z);

Problem description:

What errors are here?
1: int is a C++ variable type, not a DM's. You need to replace int with num.

2: Your indentation is also wrong. You have the braces set the wrong way.

These are the errors/problems I can see according to the current code you posted.
Can you post here the right variant of code, please?
Best response
1. You don't seem to be using 'n' in there at all. Still, 'int' isn't a DM keyword.
2. The indentation and braces are set perfectly, so that's not the issue. (However, your use of one-space tabs isn't very nice to read)
3. It's hard to tell what you're trying to pass to the burst() procedure because it's not provided. Are you trying to pass 3 numbers, or a location returned by locate() of the 3 numbers?

You should make a procedure to get a location 'n' tiles away in a certain direction, so you don't have to do this big if/else/if chain whenever you want to do this.
mob/wolf/verb/toss_bomb() {burst(get_steps(usr, usr.dir, 3))}

proc/get_steps(atom/center, dir, n)
var dx = 0, dy = 0

if(dir & 1) dy ++
if(dir & 2) dy --
if(dir & 4) dx ++
if(dir & 8) dx --

return locate(center.x + dx * n, center.y + dy * n, center.z)