Jump to content
Sign in to follow this  
Coding_Camel

Hooking Arma II into Team Speak 3

Recommended Posts

May be wrong section, but I couldn't decide whether to put it in the coding section or the server administration, as it has to do with administrating a server. What I am trying to do is make arma 2 check if a sertain team is on a TeamSpeak server. Is this even remotely possible?

Share this post


Link to post
Share on other sites

I should hope that any team playing ArmA2 would be on TeamSpeak, hopefully using ACRE to it's fullest. :)

But no, thankfully the ArmA2 scripting engine cannot access programs running on your PC and thank god for that.

Share this post


Link to post
Share on other sites
I should hope that any But no, thankfully the ArmA2 scripting engine cannot access programs running on your PC and thank god for that.

C'mon, give some credit to BIS as well ;)

Share this post


Link to post
Share on other sites

That's was easy Overlord :bounce3:

Kylania, you are dreaming eyes opened!

Share this post


Link to post
Share on other sites

I haven't seen it done, but doesn't mean it is not possible with some ingenuity. Don't underestimate what ARMA2 can achieve :)

ACRE (Advanced Combat Radio Environment), a mod for ARMA2.

How it works (basically):

You must have TeamSpeak 3 running.

You must have the TeamSpeak 3 ACRE plug-in installed and working.

You must run ARMA2 with the @ACRE mod.

I haven't used ACRE in a while, but this is how I recall it works:

When you start a mission, ACRE is initialized. It checks to see you are connected to TeamSpeak and have the plug-in. It will tell you (and other players) if you are not connected to TeamSpeak.

Reverse logic tells me you can use that to accomplish what you want.

Share this post


Link to post
Share on other sites
I should hope that any team playing ArmA2 would be on TeamSpeak, hopefully using ACRE to it's fullest. :)

But no, thankfully the ArmA2 scripting engine cannot access programs running on your PC and thank god for that.

Actually it can and that is how ACRE works through JayArma2Lib as I understand it. So if you knew what you were doing and could write what you needed you can create a mod that does what you want to do.

But, why bother when you can use ACRE. Of course I think ACRE requires ACE so that might be a stumbling block. But then again, why would you want to play without ACE!! :)

Share this post


Link to post
Share on other sites
ACRE only requires CBA, not ACE.

Ah cool, its a no-brainer then.

Share this post


Link to post
Share on other sites

I'm facing a similar problem: I want to check if a player who is playing on my public arma server also is teamspeak, if not kick him off. I thought of two different methods to do this:

The first one was already mentioned here: Write an extension library and use the arma scripting to communicate with the teamspeak server, or have it at least write the data into a pipe so I can fetch it with another program. But sadly, the "extension" doesnt seem to work on linux, or only works with some very ugly tricks. Since im using linux, I can't use this method.

My second thought was to read out the logs the server is producing and check for connecting players there, and read the sqlite database of teamspeak to check if the player is connected (I'm not using tsquery since theres no way to retrieve ips via that method, and I don't want players to have their name to be exactly like they are in teamspeak). However, the problem there is to actually kick off the player if he's not on teamspeak. I thought of using BeRcon to do this, but sadly theres no BeRcon client programm for linux, but I might run the windows client with wine or mono. I'm just not sure if its possible to start it from console and have it just run one command and exit after that.

I prefer the second method, because it's more independent from the arma2 server itself. And if the BeRcon works, you can also warn the player before kicking him off with the "say" command, instead of just kicking him. So, thats probably how I'm going to do it. If you are interessted, I can post my results/attempts here. I'm using python to do this, since theres a nice sqlite library available for it and it runs on windows and linux (even mac, but meh).

Share this post


Link to post
Share on other sites
"extension" doesnt seem to work on linux, or only works with some very ugly tricks. Since im using linux, I can't use this method.

You may also code server .rpt parser (ie .so or daemon) or even some script language such php/python. Script (SQF VM) writes to .RPT (onPlayerConnected event) and parser reads .rpt for some key strings like <TEAMSTATUS>...some data...</TEAMSTATUS>.

Share this post


Link to post
Share on other sites
You may also code server .rpt parser (ie .so or daemon) or even some script language such php/python. Script (SQF VM) writes to .RPT (onPlayerConnected event) and parser reads .rpt for some key strings like <TEAMSTATUS>...some data...</TEAMSTATUS>.

I'm doing something like this: I read from the logfile the server creates. If BattleEyes runs on the server, a line like this will show everytime a player connects:

12:08:46 BattlEye Server: Player #0 localhost (127.0.0.1:20755) connected

If the player diconnects/times out/gets kicked a similar line will show up.

While writing this, I realized that, as I have an open connection to the BEServer anyways, I could check the returned packets too (which is probaly faster, so I'll do that).

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×