I would try changing "firedelay 0.095" first in models/weapons/mp40.tik for example to see if that works for the AI.
The singleplayer scripts make AI shoot by running: "self exec global/aimat.scr ($player gettagposition "bip01 head" + (0 0 -25))" and then running "self exec global/shoot.scr"
The shooting animations in anim/shoot.scr run "self setactionanim (self.weapongroup + "_shootauto") -60 60" and "self waittill upperanimdone", so only 1 animation can run at the same time.
Hence in models/human/animation/human_mp40.tik, I think the only way to speed up AI firing is by removing some "fire" lines, or lowering the numbers under "mp40_shoot01", "mp40_shoot02", and "mp40_shootauto".
Those numbers are frames: 0 = frame 0, 2 = 2nd frame (skipping 1st frame), 4th frame, etc, so if you write, "0 fire; 1 fire; 2 fire; 3 fire" up to "7 fire", that should increase the mp40 firing rate by 2x (although this will likely do the same for $player's weapons too).
Code:
mp40_shootauto weapon_smg/smg_shoot.skc
{
server
{
0 fire
//2 fire
//4 fire
//6 fire
//8 fire
//10 fire
//12 fire
//14 fire
}
}
Code:
mp40_shootauto weapon_smg/smg_shoot.skc
{
server
{
0 fire
1 fire
2 fire
3 fire
4 fire
5 fire
6 fire
7 fire
}
}
Worst case scenario if none of this works: somehow attach the weapon of choice onto the AI's hands, then give the gun itself a targetname so you can do "$weapon setaimtarget $player" and "$weapon anim fire" in a while-loop, which will forcibly shoot the gun once per frame. More conditions are needed such as "distance from $player" and "cansee $player".