For who might still be interested..
I had the same problem as esmitex with Guido's answer. I had to modify it, so I ended up with the following solution:
Replace FUNCTION {output.bibitem} with
FUNCTION {output.bibitem}
{ newline$
"\bibitem[{" write$ make.short.names "}(" * year empty$ {skip$} { year * } if$ "){" * make.full.names * "}]{" * write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
I also had to precede the above code with the following additional functions:
FUNCTION {format.full.names}
{'s :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}" format.name$
't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
" " * bbl.etal emphasize *
}
{
"\&"
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.short.names}
{'s :=
s num.names$ 'numnames :=
numnames #1 >
{ s #1 "{vv~}{ll}" format.name$ " " * bbl.etal emphasize * }
{ numnames #1 = { s #1 "{vv~}{ll}" format.name$ } { "NN" } if$ }
if$
}
FUNCTION {author.editor.key.full}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.full.names }
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.editor.key.short}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.short.names }
if$
}
{ author format.short.names }
if$
}
FUNCTION {author.key.full}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.key.short}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ author format.short.names }
if$
}
FUNCTION {editor.key.full}
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.full.names }
if$
}
FUNCTION {editor.key.short}
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ editor format.short.names }
if$
}
FUNCTION {make.full.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.key.full
{ type$ "proceedings" =
'editor.key.full
'author.key.full
if$
}
if$
}
FUNCTION {make.short.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.key.short
{ type$ "proceedings" =
'editor.key.short
'author.key.short
if$
}
if$
}
If you already have any of these functions defined, you might want to keep them or replace them.
The function make.short.names defines the author list to be displayed inline in text when using \citeauthor or \citet. This version shows John et al. [11] or just John [11] in case of a single author.