Results 1 to 15 of 32
-
16-08-2010, 21:46 #1
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
TS3 IPC Plugin - Use the plugin sdk in your external apps
I'm glad to introduce the ts3 ipc plugin.
What it does:
With this plugin enabled, you have the possibility to interact with the client and react to the client's events within your external applications.
Why would I need it?
Some of you missed some kind of TSRemote app (known from TeamSpeak 2), with this plugin and your own app this could be realized.
Why should I use this plugin and lib instead of using the clientquery plugin?
My clientlib is nearly the whole plugin SDK transformed into interprocess communication functions and it offers a similar interface. If you use the clientquery plugin you need to parse the output yourself, with this lib, you get the data types you need (eg. string, clientids[anyID], channelids[uint64],...).
What you will get:
Included in the download are the plugin (ts3_ipcplugin.so/libts3_ipcplugin.so), the shared library to interact with the plugin (ts3_ipcplugin_client_lib.dll/libts3_ipcplugin_client_lib.so), the lib to link with and the C-Headers to include in your project.
libts3_ipcplugin.so/ts3_ipcplugin.dll - This is the plugin, put it in your TS3 plugins directory.
libts3_ipcplugin_client_lib.so/ts3_ipcplugin_client_lib.dll - This is the library you can use in your project. Put it in a directory of your PATH variable or in the working directory of your project.
Can I use the full plugin sdk?
Not quite. The functions to interact with the FMOD library are not implemented and the new functions ts3plugin_infoTitle, ts3plugin_infoData, ts3plugin_freeMemory are also not, because of the possible high frequency of calling.
The "clients" can't change the return values of events like processCommand, onClientPoke, onTextMessage, etc.
The event onUserLoggingMessage won't be broadcastet, if the ts3 ipc plugin itself logs a message.
Everything else can be used.
Which programming languages are supported?
Every language which can load shared C libraries, so for example C, C++, C#, Delphi, VB,...
There is a C/C++ header included, so C and C++ can be used immediately. For other languages you need to load the library manually (see your language documentation for more information).
Supported OS: Linux 32/64 bit, Windows 32/64 bit
Hopefully, I will add a release for Mac in a couple of days.
Download: http://www.planetteamspeak.com/compo...id,69/gid,106/ (Plugin API version 8 / Client Beta29)
EDIT: Updated to plugin/lib version 1.02 (21.08.2010)
EDIT: Updated to plugin/lib version 1.03 (18.09.2010)
Download Example: http://download.planetteamspeak.com/...ib_example.zip
(Shows how to react on the events and how to call some functions)
Note for windows users: The plugin is compiled with MinGW, if you don't have it, copy the two other DLL in the MAIN directory of your TeamSpeak 3 installation.
The windows plugin is listening to port 61337, but only allows clients from the same machine. (On Linux the plugin uses unix domain sockets, so no port is used.)
Note for linux users: You need to link your applications with pthread (link with -lpthread).
I am looking forward to some feedback
Code-Example
Code:... #include "ipc_client_commands.h" #include "public_errors.h" #ifdef linux #include <sys/ipc.h> #endif void onProcessCommand(uint64 schid, const char* cmd, void* ptr) { //react here on the event or do some pseudo oop call with ((myclasstype*)ptr)->processCommand(schid, cmd) } void onPluginLoaded() { //will be called, when the ts3 client starts and the plugin is loaded } int main(int argc, char** argv) { #ifdef WIN32 unsigned int ret = initSDK("plus"); #else key_t key = ftok("./", 42); unsigned int ret = initSDK(key); #endif if (ret == ERROR_ok) { ts3_ipc_event_callbacks cbs; memset(&cbs, 0, sizeof(ts3_ipc_event_callbacks)); cbs.processCommand = onProcessCommand; //cbs.object = pmyclass; if (registerCallbacks(cbs) != ERROR_ok) ;//error //do some other fantastic code //... } else if (ret == IPC_ERROR_NO_SERVER) { if (callOnPluginInitiation(onPluginLoaded) == ERROR_ok) printf("plugin is not running, but I will be called, if it's up\n"); else printf("some error occured in specifying callback function\n"); } //... if (shutdownSDK() != ERROR_ok) ;//error while shutting down the connection to the plugin } return 0; }Last edited by Thomas; 23-09-2010 at 18:38.
-
18-08-2010, 22:16 #2
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
-== Updated to version 1.01 ==-
Plugin:
- Handles now crashes of the clientlib
- Fixed a big bug in the command calling function (now clients can send more than one command
)
Lib:
- Clients will unregister now correctly
- initSDK, registerCallbacks and shutdownSDK returns now "unsigned int"
(See the first post for a download link)
***Added an example*** (see first post as well)Last edited by Thomas; 19-08-2010 at 00:12.
-
21-08-2010, 20:54 #3
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
-== Updated to version 1.02 ==-
Plugin:
- plugin wakes up the clients, which specified an initiation callback
Lib:
- shutdownSDK will return now the correct value, if initSDK failed
- you can specify a callback function which is called, when the plugin inits (call it, if initSDK fails with IPC_ERROR_NO_SERVER)
(See the first post for a download link)Last edited by Thomas; 28-08-2010 at 16:38.
-
28-08-2010, 14:21 #4
-= TeamSpeak Lover =-
- Join Date
- Apr 2009
- Location
- italy
- Posts
- 46
Thanks I think many people are happy in your work!
I unfortunately with C + + are unable to work, you can use your dll with vb.net? can you help me with an example?
-
28-08-2010, 14:36 #5
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
I'm not very familiar with VB, but I am quite sure, that you can load C libraries in your VB project.
-
28-08-2010, 15:46 #6
-= TeamSpeak Lover =-
- Join Date
- Apr 2009
- Location
- italy
- Posts
- 46
I do not understand how you can work, maybe I could do it with c # but I need help. another thing that should explain a bit how to install the files.
excuse my English but I use google to translate! Thanks
-
28-08-2010, 16:34 #7
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
You need to port the header (ipc_client_commands.h and if you need callbacks ipc_events.h as well) to VB (here is an example).
Otherwise you can use the WINAPI functions LoadLibrary and GetProcAdress to dynamically load the library.
libts3_ipcplugin.so/ts3_ipcplugin.dll - This is the plugin, put it in your TS3 plugins directory.
libts3_ipcplugin_client_lib.so/ts3_ipcplugin_client_lib.dll - This is the library you can use in your project. Put it in a directory of your PATH variable or in the working directory of your project.
EDIT: MeiserM transfered the SDK to VB.Net, this seems to be a good example to create your own VB interface.Last edited by Thomas; 28-08-2010 at 16:47.
-
28-08-2010, 17:01 #8
-= TeamSpeak User =-
- Join Date
- Jan 2007
- Location
- Berlin
- Posts
- 25
Hello!
Does someone know how i can use this with delphi????
Bye Sven!
-
28-08-2010, 17:46 #9
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
Same like VB: you need a delphi interface.
TheJomo has ported the plugin sdk interface to delphi. The plugin sdk and this lib is very similar.
Hope that helps.
-
31-08-2010, 09:12 #10
-= TeamSpeak Lover =-
- Join Date
- Jun 2010
- Location
- Alzenau / Germany
- Posts
- 96
The addon sounds pretty useful. As you belong to the TS3 support team, can I suppose, that the addon will be updated regularily (with new API plugin versions) ?
If it's able to handle multiple applications at a time, I'd like to use it to communicate with my overlay (http://ts3overlay.r-dev.de)
-
31-08-2010, 20:02 #11
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
To make clear: the plugin is my private project and no software by TeamSpeak Systems GmbH.As you belong to the TS3 support team
But yes, I will try tothat the addon will be updated regularily
Don't understand what you mean. You can access the different connections (the TS3 client opened) with the identifying serverConnectionHandlerID, similar to the Plugin SDK of the TeamSpeak 3 client.If it's able to handle multiple applications at a time
-
01-09-2010, 10:56 #12
-= TeamSpeak Lover =-
- Join Date
- Apr 2009
- Location
- italy
- Posts
- 46
I can not do without an example in vb I can not!
-
01-09-2010, 12:13 #13
-= TeamSpeak Lover =-
- Join Date
- Jun 2010
- Location
- Alzenau / Germany
- Posts
- 96
The TS3 overlay is a DLL that is injected into multiple processes, so I'd have multiple instances (different applications), that try to communicate with your plugin.
My question is: can I "connect" to the plugin multiple times (from different applications) and receive the "ts3plugin_onTalkStatusChangeEvent" in every application? Or do I need to create one single instance that connects to the plugin and distribute the information to the other instances by myself?
-
01-09-2010, 12:16 #14
-= TeamSpeak Fanatic =-
- Join Date
- Sep 2005
- Location
- Germany / Dortmund
- Posts
- 1,282
Ah ok, got it

Yes, multiple instances are possible.
But you need to send different keys (on windows a 4 character-wide char-array) to the plugin (in initSDK()).
-
12-09-2010, 15:01 #15
-= TeamSpeak Lover =-
- Join Date
- Apr 2009
- Location
- italy
- Posts
- 46
Please one exemple in c or vb.net for swich channel!
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Similar Threads
-
lost file transfer connection
By xEvAngelx in forum Linux / FreeBSDReplies: 12Last Post: 24-06-2010, 18:30 -
TS3 Plugin SDK in Delphi
By TheJomo in forum PluginsReplies: 13Last Post: 21-02-2010, 14:31 -
TS3 Plugin SDK - Visual C++ 208
By tomix in forum PluginsReplies: 2Last Post: 22-12-2009, 12:04 -
I can find my IP
By Barmace in forum [TeamSpeak 2] Server SupportReplies: 16Last Post: 21-05-2005, 12:01 -
disconnection
By Barmace in forum [TeamSpeak 2] Server SupportReplies: 8Last Post: 10-10-2004, 19:23


Reply With Quote
