Take a look at this plugin I wrote for EventScripts a while ago. We've been using it faithfully for TeamSpeak, but I'm moving to SourceMod instead of Mani, due to lack of support, so it prolly won't work for any of you on these forums.
http://forums.mattie.info/cs/forums/...ic.php?t=12563
I never did get Ventrillo support figured out, as you can see my frustrations in the version history.
However, you can see the code and realize that I was quite successful in making it store user data in an internal temporary database. This would allow you to trigger disconnect/reconnect to the proper channels if setup with teams. It is triggered on Event Player_teams, meaning whenever they select a team.
There is no way to determine if someone is on your TS and then joins the game, and once they leave your server, they are out of the database. However, even at mapchanges it knows who was in the db and needs to be placed in the proper channel.
As for the TeamSpeak issue of going to desktop, this is entirely caused by TeamSpeak being launched. If you have it running before you play, then it doesn't drop to desktop to launch.
I have a request of your plugin, since I hope to migrate to it and drop EventScripts totoally since everything I need is on MM and SM.
Can you please setup a cvar to set the chat message? If you look at my code, you see that each server would have a different join message, like gsxvoice in my case.
I realize it's prolly easier for the world to get used to typing the same commands on all servers, but my world is used to typing gsxvoice.
I haven't got a clue how to code for MM or SM right now, or I'd just mess with it myself.