SourcePawn is not like C++ (the only similarity is probably syntax) and other OOLs.
There can be only one function L4D2_SpawnInfected with only one prototype.
You can define typesets (a set of typedefs with one name and typedef is not the same as in C/C++) but they're used as callbacks and you have to handle (choose which one to use in different cases) them manually.