Donate to the B3 fund!

"even a small donation helps!"
Donate with PayPal!
Most of the plugins here are made by B3 users and the authors may not visit frequently. If you need support for plugins or if questions remain unanswered, you will have to contact the author directly. Read the full Support Disclaimer here

NOTE: Do not attach plugins to your forumtopics! Attachements are periodically removed by maintenance tasks. Upload your plugins to our Downloads section instead!

Author Topic: Teamspeak plugin (all games)  (Read 32335 times)

Offline Courgette

  • Senior Dev.
  • Hero Member
  • *
  • Posts: 4883
    • Github repository
Re: Teamspeak plugin (all games)
« Reply #45 on: August 03, 2011, 08:20:48 AM »
also have a look here as it is advertised to have a command that list ppl connected on TS

Offline Mikobiko

  • Sr. Member
  • ****
  • Posts: 250
Re: Teamspeak plugin (all games)
« Reply #46 on: October 05, 2011, 03:13:15 AM »
Any chance we could see an update that could use IP's to help make guesses? IE some of our peoples names are a tad too long ingame so some is cut off, however a close match could be found using a partial name, and IP address.

Offline Courgette

  • Senior Dev.
  • Hero Member
  • *
  • Posts: 4883
    • Github repository
Re: Teamspeak plugin (all games)
« Reply #47 on: October 05, 2011, 02:40:28 PM »
this cannot be done as the Teamspeak3 protocol does not provides IP for connected users. See http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf

Offline Wannabe

  • Newbie
  • *
  • Posts: 5
    • Aftermath Unleashed
Re: Teamspeak plugin (all games)
« Reply #48 on: October 07, 2011, 06:50:23 PM »
Would love to get this going, however I don't host my own TS3 server... could that be my problem?

In game (COD5) using !teamspeak returns unknown command.

==Edit==

Okay, so I just figured out that the directions are wrong.

Directions:
Installation
------------

 * copy teamspeak.py into b3/extplugins
 * copy plugin_teamspeak.xml into your B3 conf folder
 * edit plugin_teamspeak.xml with your teamspeak server information
 * update your main b3 config file with :
<plugin name="teamspeak" config="@conf/extplugins/plugin_teamspeak.xml"/>


The path in your B3.xml  for the plugin should be:

<plugin name="teamspeak" config="@conf/plugin_teamspeak.xml"/>

So at least now I'm getting a response from B3 when calling !teamspeak, however when issuing a !tsreconnect I get a connection cannot be established.

My server UDP port is 9160, however my queryport is 9100, and I have a password required to connect which there is no config for.

Any help you share would be great.

Thanks.

==Edit #2 ===
Found this in the b3.log:
111008 16:55:02   ERROR   'TeamspeakPlugin: ID 10 (Can not open a link on the port or IP) [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond'
« Last Edit: October 08, 2011, 11:08:02 PM by Wannabe »

Offline akghost

  • Jr. Member
  • **
  • Posts: 29
Re: Teamspeak plugin (all games)
« Reply #49 on: October 09, 2011, 06:21:22 PM »
The connection may be refused because of the port settings. My first question is do you have a server query account set up for the Plugin? If so I need to look over the code and see if we can figure out how to configure the port.  Sorry for my delay to respond. Looting forward to trying to help you out!

Offline Wannabe

  • Newbie
  • *
  • Posts: 5
    • Aftermath Unleashed
Re: Teamspeak plugin (all games)
« Reply #50 on: October 09, 2011, 07:27:33 PM »
I believe I have a proper server query set up correctly.  The link to a video in the documentation is unusable for me since I rent my TS3 server.

In my master account, I did the following to acquire (what I think is) the same information required for a server query.

1. Tools > Server Query Login
2. Entered a login name for the connections
3. Used the generated password in my plugin_teamspeak.xml file.

My TS3 host uses a domain name:port, however I've even tried using the actual IP address with no success.

The config asks for a query port.  I had to go to TSViewer.com and check my account as I remembered there was two ports it needed to work properly.  A UDP and a TCP Query Port.

It is this TCP Query Port I've placed in the config file.

In addition to the above, last night I figured out/learned about telnet, and accessed the serverquery via that.
Now, I have no clue how to use the correct commands for telnet, however simply logging in gave me a list of 40+ servers. 
What I was able to find was my actual Virtual Server ID number.  The config defaults to "1", so I changed that to the correct "119" value.
Still no luck.

Going over the logs (new log each time B3 restarts?) there are now different errors:

111008 19:37:30   ERROR   'TeamspeakPlugin: ID 10 (Can not open a link on the port or IP) [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond'

111009 02:32:21   ERROR   'TeamspeakPlugin: ID 10 (Can not open a link on the port or IP) [Errno 10061] No connection could be made because the target machine actively refused it'


Hope that gives ya bit more to go by.
Heres a link to my most current log file:  http://pastebin.com/R95haZiz

Thanks for your help.

Offline akghost

  • Jr. Member
  • **
  • Posts: 29
Re: Teamspeak plugin (all games)
« Reply #51 on: October 10, 2011, 12:38:51 AM »
At this time, sounds like all is well.  one of 2 things.. I can either create a server query account om my server so we can check your settings and/or if i could teamview and Teamspeak in and see if we cant figure this out.
I will say this, i have my own TS3 server and never worked with a rented server.. but am a quick learner.. with good references.
If you could post your teamspeak config.xml (Remove passwords for security) Thanks!

AKGhost

PS, you are welcome to connect to my TS3 At akghost.dyndns.org and try and reach me.. PS text is good at first till i get my mic connected.
« Last Edit: October 10, 2011, 12:44:01 AM by akghost »

Offline akghost

  • Jr. Member
  • **
  • Posts: 29
Re: Teamspeak plugin (all games)
« Reply #52 on: October 10, 2011, 12:57:04 AM »
On further inspection and looking. Have you double checked your port settings? the port that B3 is trying to access (63.209.37.210:9160) Does not seem to be a valid port...

AKGhost

Offline Wannabe

  • Newbie
  • *
  • Posts: 5
    • Aftermath Unleashed
Re: Teamspeak plugin (all games)
« Reply #53 on: October 10, 2011, 02:23:22 AM »
Oops!
Okay I obviously transposed a number or two there.   ;D

After making that correction, I was still unable to connect.  So, IP mistake aside, yet using the correct domain name "ts8.gameservers.com:9160 I still couldn't connect.

Thanks for pointing that out BTW.

With the most recent error: No connection could be made because the target machine actively refused it'

The 'refused it' part was confusing me.   So, my next trial step was to remove the login and password from the config.

BANG!  Connected right away.. however it stopped B3 from continuing to load the rest of the b3.xm. file, thus making B3 not function.

I created yet another serverquery password, and user name and it actually created channels on my TS3 server. 

It appears to be working correctly, however on a Deathmath/Free for all based gametypes, it still moves players to separate teams. 

Is it suppose to do that?  As well, when/if you change to spectator you do not move back to a 'base' channel (B3 Autoswitched Channels).

I've yet to be in-game and see what happens when the round ends, weather you say in the same team-based channel until the next map starts and a team is chosen or if you go back to the common channel.

So, aside from those questions, and 2 days trying to make it work.. I'm glad it's doing something.


We used to use TSVCOD4, a TS2 switcher that would move you to and from channels based on your location with the game.  Basically if you weren't allies/axis you would be in the common channel.  Made it great, so the few moments one has between rounds you could talk together and do a little ribbing.

Offline akghost

  • Jr. Member
  • **
  • Posts: 29
Re: Teamspeak plugin (all games)
« Reply #54 on: October 10, 2011, 03:16:16 AM »
From my experience the plugin works great with TDM. As for FFA, the plugin notes Which side you join but can not determine if you are playing Free For All because the log that B3 sees is still the same language. The way the plugin looks (Courgette Interject if i am wrong) at the log is how it determines what side you are on. you will have to issue !tsauto off to play FFA, and !tsauto on to use the addon for team based games.
As for spectate, it does not know that you are in spectate because i have not seen the log indicate a move to spectate, thereby telling the plugin that you were moved.

As for new rounds, the plugin has to wait for the first kill/death by a player before it can determine which channel you are to be moved to (So this is normal.)
Hope this helps.

Offline Courgette

  • Senior Dev.
  • Hero Member
  • *
  • Posts: 4883
    • Github repository
Re: Teamspeak plugin (all games)
« Reply #55 on: October 10, 2011, 10:08:55 AM »
Thank you for helping with support akghost. I accumulated too many projects over the years and cannot provide much help myself anymore.

Which team a player is in (regardless of game type) is the matter of the B3 parser. This plugin relies on what team B3 think players are in. If there is an issue with teams, then the fix would have to be in the B3 parser for that particular game

Offline akghost

  • Jr. Member
  • **
  • Posts: 29
Re: Teamspeak plugin (all games)
« Reply #56 on: October 29, 2011, 04:48:13 PM »
Havent forgot... just been busy. Thanks for the patience.

Offline Mikobiko

  • Sr. Member
  • ****
  • Posts: 250
Re: Teamspeak plugin (all games)
« Reply #57 on: November 06, 2011, 04:10:18 AM »
this cannot be done as the Teamspeak3 protocol does not provides IP for connected users. See http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf

Hi Courgerette.

I found a plugin that does do it for Procon for BF3. And its GNU so you can see its source:

http://pastebin.com/ZPEiFhNu

Hope you can add this feature.

More specifically it seems to find it around:

Code: [Select]
/// <summary>Sets all the advanced data for a Teamspeak client.</summary>
            /// <param name="clientInfo">The client's information to set from.</param>
            public void setAdvancedData(TeamspeakResponseGroup clientInfo)
            {
                String value;
                Int32   iValue;
                Boolean bValue;

                advLoginName = clientInfo["client_login_name"];
                advUniqueId  = clientInfo["client_unique_identifier"];
                advIpAddress = clientInfo["connection_client_ip"];

                advVersion     = clientInfo["client_version"];
                advPlatform    = clientInfo["client_platform"];
                advDescription = clientInfo["client_description"];
                advCountry     = clientInfo["client_country"];
                advMetaData    = clientInfo["client_meta_data"];

                if ((value = clientInfo["client_channel_group_id"])     != null) if (Int32.TryParse(value, out iValue))   advChannelGroupId     = iValue; else advChannelGroupId     = null; else advChannelGroupId     = null;
                if ((value = clientInfo["client_servergroups"])         != null) if (Int32.TryParse(value, out iValue))   advServerGroupId      = iValue; else advServerGroupId      = null; else advServerGroupId      = null;
                if ((value = clientInfo["client_is_channel_commander"]) != null) if (Boolean.TryParse(value, out bValue)) advIsChannelCommander = bValue; else advIsChannelCommander = null; else advIsChannelCommander = null;

                advDefaultChannel = clientInfo["client_default_channel"];
                if ((value = clientInfo["connection_connected_time"]) != null) if (Int32.TryParse(value, out iValue)) advConnectionTime   = iValue; else advConnectionTime   = null; else advConnectionTime   = null;
                if ((value = clientInfo["client_idle_time"])          != null) if (Int32.TryParse(value, out iValue)) advIdleTime         = iValue; else advIdleTime         = null; else advIdleTime         = null;
                if ((value = clientInfo["client_created"])            != null) if (Int32.TryParse(value, out iValue)) advCreationTime     = iValue; else advCreationTime     = null; else advCreationTime     = null;
                if ((value = clientInfo["client_lastconnected"])      != null) if (Int32.TryParse(value, out iValue)) advLastConnected    = iValue; else advLastConnected    = null; else advLastConnected    = null;
                if ((value = clientInfo["client_totalconnections"])   != null) if (Int32.TryParse(value, out iValue)) advTotalConnections = iValue; else advTotalConnections = null; else advTotalConnections = null;

                if ((value = clientInfo["client_input_muted"])      != null) if (Boolean.TryParse(value, out bValue)) advInputMuted      = bValue; else advInputMuted      = null; else advInputMuted      = null;
                if ((value = clientInfo["client_output_muted"])     != null) if (Boolean.TryParse(value, out bValue)) advOutputMuted     = bValue; else advOutputMuted     = null; else advOutputMuted     = null;
                if ((value = clientInfo["client_outputonly_muted"]) != null) if (Boolean.TryParse(value, out bValue)) advOutputMutedOnly = bValue; else advOutputMutedOnly = null; else advOutputMutedOnly = null;
                if ((value = clientInfo["client_input_hardware"])   != null) if (Boolean.TryParse(value, out bValue)) advInputHardware   = bValue; else advInputHardware   = null; else advInputHardware   = null;
                if ((value = clientInfo["client_output_hardware"])  != null) if (Boolean.TryParse(value, out bValue)) advOutputHardware  = bValue; else advOutputHardware  = null; else advOutputHardware  = null;
                if ((value = clientInfo["client_is_recording"])     != null) if (Boolean.TryParse(value, out bValue)) advIsRecording     = bValue; else advIsRecording     = null; else advIsRecording     = null;

                advFlagAvatar   = clientInfo["client_flag_avatar"];
                advAwayMessage  = clientInfo["client_away_message"];
                advTalkMessage  = clientInfo["client_talke_request_msg"];
                advPhoneticNick = clientInfo["client_nickname_phonetic"];
                advDefaultToken = clientInfo["client_default_token"];
                advBase64Hash   = clientInfo["client_base64HashClientUID"];
                if ((value = clientInfo["client_talk_power"])                    != null) if (Int32.TryParse(value, out iValue))   advTalkPower      = iValue; else advTalkPower      = null; else advTalkPower      = null;
                if ((value = clientInfo["client_needed_serverquery_view_power"]) != null) if (Int32.TryParse(value, out iValue))   advQueryViewPower = iValue; else advQueryViewPower = null; else advQueryViewPower = null;
                if ((value = clientInfo["client_unread_messages"])               != null) if (Int32.TryParse(value, out iValue))   advUnreadMessages = iValue; else advUnreadMessages = null; else advUnreadMessages = null;
                if ((value = clientInfo["client_icon_id"])                       != null) if (Int32.TryParse(value, out iValue))   advIconId         = iValue; else advIconId         = null; else advIconId         = null;
                if ((value = clientInfo["client_away"])                          != null) if (Boolean.TryParse(value, out bValue)) advIsAway         = bValue; else advIsAway         = null; else advIsAway         = null;
                if ((value = clientInfo["client_talk_request"])                  != null) if (Boolean.TryParse(value, out bValue)) advTalkRequest    = bValue; else advTalkRequest    = null; else advTalkRequest    = null;
                if ((value = clientInfo["client_is_talker"])                     != null) if (Boolean.TryParse(value, out bValue)) advIsTalker       = bValue; else advIsTalker       = null; else advIsTalker       = null;
                if ((value = clientInfo["client_is_priority_speaker"])           != null) if (Boolean.TryParse(value, out bValue)) advIsPriority     = bValue; else advIsPriority     = null; else advIsPriority     = null;

                if ((value = clientInfo["client_month_bytes_uploaded"])                     != null) if (Int32.TryParse(value, out iValue)) advBytesUpMonth     = iValue; else advBytesUpMonth       = null; else advBytesUpMonth      = null;
                if ((value = clientInfo["client_month_bytes_downloaded"])                   != null) if (Int32.TryParse(value, out iValue)) advBytesDownMonth    = iValue; else advBytesDownMonth    = null; else advBytesDownMonth    = null;
                if ((value = clientInfo["client_total_bytes_uploaded"])                     != null) if (Int32.TryParse(value, out iValue)) advBytesUpTotal      = iValue; else advBytesUpTotal      = null; else advBytesUpTotal      = null;
                if ((value = clientInfo["client_total_bytes_downloaded"])                   != null) if (Int32.TryParse(value, out iValue)) advBytesDownTotal    = iValue; else advBytesDownTotal    = null; else advBytesDownTotal    = null;
                if ((value = clientInfo["connection_filetransfer_bandwidth_sent"])          != null) if (Int32.TryParse(value, out iValue)) advFileBandwidthSent = iValue; else advFileBandwidthSent = null; else advFileBandwidthSent = null;
                if ((value = clientInfo["connection_filetransfer_bandwidth_received"])      != null) if (Int32.TryParse(value, out iValue)) advFileBandwidthRec  = iValue; else advFileBandwidthRec  = null; else advFileBandwidthRec  = null;
                if ((value = clientInfo["connection_packets_sent_total"])                   != null) if (Int32.TryParse(value, out iValue)) advPacketsTotalSent  = iValue; else advUnreadMessages    = null; else advUnreadMessages    = null;
                if ((value = clientInfo["connection_packets_received_total"])               != null) if (Int32.TryParse(value, out iValue)) advPacketsTotalSent  = iValue; else advPacketsTotalSent  = null; else advPacketsTotalSent  = null;
                if ((value = clientInfo["connection_bytes_sent_total"])                     != null) if (Int32.TryParse(value, out iValue)) advBytesTotalSent    = iValue; else advBytesTotalSent    = null; else advBytesTotalSent    = null;
                if ((value = clientInfo["connection_bytes_received_total"])                 != null) if (Int32.TryParse(value, out iValue)) advBytesTotalRec     = iValue; else advBytesTotalRec     = null; else advBytesTotalRec     = null;
                if ((value = clientInfo["connection_bandwidth_sent_last_second_total"])     != null) if (Int32.TryParse(value, out iValue)) advBndwdthSecondSent = iValue; else advBndwdthSecondSent = null; else advBndwdthSecondSent = null;
                if ((value = clientInfo["connection_bandwidth_received_last_second_total"]) != null) if (Int32.TryParse(value, out iValue)) advBndwdthSecondRec  = iValue; else advBndwdthSecondRec  = null; else advBndwdthSecondRec  = null;
                if ((value = clientInfo["connection_bandwidth_sent_last_minute_total"])     != null) if (Int32.TryParse(value, out iValue)) advBndwdthMinuteSent = iValue; else advBndwdthMinuteSent = null; else advBndwdthMinuteSent = null;
                if ((value = clientInfo["connection_bandwidth_received_last_minute_total"]) != null) if (Int32.TryParse(value, out iValue)) advBndwdthMinuteRec  = iValue; else advBndwdthMinuteRec  = null; else advBndwdthMinuteRec  = null;
            }
        }

TS3 Server Query manual also lists:

CONNECTION_CLIENT_IP
The IPv4 address of the client
« Last Edit: November 06, 2011, 04:12:39 AM by Mikobiko »

Offline Courgette

  • Senior Dev.
  • Hero Member
  • *
  • Posts: 4883
    • Github repository
Re: Teamspeak plugin (all games)
« Reply #58 on: November 06, 2011, 10:55:49 AM »
nice  :)

I wonder why I missed that before  ::)

See https://github.com/courgette/b3-plugin-teamspeak/issues/1

Offline Mikobiko

  • Sr. Member
  • ****
  • Posts: 250
Re: Teamspeak plugin (all games)
« Reply #59 on: November 06, 2011, 07:13:55 PM »
Awesome, keep up the great work!

Yea, I dunno when they added it, it may be something that didn't exist when you went looking?

 


Rate this page +1 at Google Search

anything