Forum

Results 1 to 15 of 17

Hybrid View

  1. #1
    Join Date
    October 2012
    Location
    Germany
    Posts
    553

    Post [PluginSDK] API Features & Issues Collection

    Disclaimer: This thread is not for end-users, but for plugin and sdk developers. If you're here to request a plugin, feature or plugin crash fix, this is the wrong place. Use the plugin's official support thread or create a thread if not applicable.
    This collection is supposed to be both for the devs to quickly gain an oversight on what's going on at the plugin API front, as well as for plugin developers to have a centralized point to benefit from each others experiences.


    API Additions & Change Requests
    Oh, if only I could...

    • assign hotkeys from inside the plugin dynamically [remarks]
    • toggle 3dsoundenabled (assumption: write to database not having immediate effect)
    • have a seperate state variable for "do 3d processing on this client" instead of it depending on the position of that client relative to the listener
      [reference]
    • echo reduction (as opposed to cancellation) isn't available in the API



    API Bugs
    It's a bug, not a feature!

    • onEditPostProcessVoiceDataEvent, onEditPlaybackVoiceDataEvent: id corruption on whisper [workaround] Status: In Tracker
    • Sending whispers isn't caught by tree view, shown as talk in taskbar on sender, shown correctly on recipient [reference]
    • setWhisperList not calling onServerErrorEvent with returnCode [reference] possibly related to above
    • Audio callbacks are bypassed for recording [reference]



    API Quirks
    Not really a bug, but unexpected, easily overlooked? This list is about those things.

    • Note that users can enable & disable your plugin while connected. The client won't bring you up to speed in that case. [example]
    • Bug-ish: onPluginCommandEvent, hotkeys use the plugin file name, minus _someOs, not ts3plugin_name(). Watch for case-sensitivy (e.g. toLower) and such
    • If you're crashing the client without it being able to create a dump file, watch for thread related issues like console debug.



    Plugin Ecosystem
    Package Installer not working on C64? Auto-Updater anniversary? This list is about those things.

    • OpenSSL could be optionally supported if found on system instead of flat-out disabled [reference] - included in 3.0.14
    • Download page requires API Version filtering
    Last edited by Philosound; March 14th, 2014 at 02:31 PM.

  2. #2
    Join Date
    October 2012
    Location
    Germany
    Posts
    553
    Example reply.
    Cross-referencing that report, this should be added to the bug list!

  3. #3
    Join Date
    October 2012
    Location
    Germany
    Posts
    553
    _requestClientSetWhisperList:
    Returns ERROR_ok on success
    I don't know about the client sdk, but with the plugin sdk it does not.

  4. #4
    Join Date
    May 2007
    Location
    Eastern NC
    Posts
    1,799
    Quote Originally Posted by Philosound View Post
    Plugin Ecosystem
    Package Installer not working on C64? Auto-Updater anniversary? This list is about those things.

    • Download page requires API Version filtering
    Very much agree, been asking for that since the plugin contest during the beta. Supported OS filter would not be a bad idea to add too, but the API version is a higher priority to me.

  5. #5
    Join Date
    October 2012
    Location
    Germany
    Posts
    553
    Given the rare nature of API ups, I'm gonna do sth. that might look like a reminding bump of this collection, while it is ofc only the commit message that I moved the SSL request out of the API additions category since it doesn't require changes to the API itself

  6. #6
    Join Date
    October 2003
    Location
    Germany
    Posts
    2,527

    Question

    Improvements:

    There's this thingy about the list of parameters for ts3plugin_onTextMessageEvent(). The third parameter (toID) is pretty much useless in its current implementation. Here's why:

    1. When the message is sent to the server, the toID is always 0. This is perfectly normal and you don't really need the parameter for this type of text message.
    2. When the message is sent to the channel, the toID is also 0. I would expect this parameter to indicate the ID of the channel where you've received the message, but since the toID is an anyID it cannot be used for channel IDs as those can get very large and therefore are uint64 numbers.
    3. When the message is sent private, your own client is the target and there's also no need for the information stored in that parameter as you know your own ID.

    I'd like to see the type of toID changed to uint64 and have it contain the channel ID on channel chat messages.


    Feature Requests:

    I'd like to have the ability to change the active server/chat tab.

    Code:
    // switch active server tab by server connection handler ID
    unsigned int (*switchServerConnectionHandler)(uint64 serverConnectionHandlerID);
    
    // get active chat tab by server connection handler ID
    unsigned int (*getCurrentTab)(uint64 serverConnectionHandlerID, anyID* type, anyID* toID);
    
    // set active chat tab by server connection handler ID
    unsigned int (*setCurrentTab)(uint64 serverConnectionHandlerID, anyID type, anyID toID);
    For getCurrentTab() and setCurrentTab(), the mode could simply use the existing TextMessageTargetMode values while toID could be the client ID for private chat tabs (or 0 for other tabs as you can only have one server/channel tab open per connection).

    I'd also like to find out if a client is on my list of friends or blocked people.

    Code:
    // get client contact type by unique identifier
    unsigned int (*getClientContactType)(const char* clientUID, anyID result);

    Bugs:

    The ts3plugin_onFileTransferStatusEvent() is not fired when a file transfer starts.
    Last edited by ScP; February 21st, 2014 at 04:22 PM.

  7. #7
    Join Date
    March 2010
    Location
    Tacoma
    Posts
    68
    I think this might be a bug, or I might be drunk...

    So in the voice buffer call backs the channelSpeakerArray is giving me odd values. I have a stereo mic and the channels argument is being passed in as 2, but the values in channelSpeakerArray are off for SPEAKER_FRONT_LEFT and SPEAKER_FRONT_RIGHT from what you have in your defines.

    When I spit them out using a printf format of %08x I get for SPEAKER_FRONT_LEFT 0x10000000 and for SPEAKER_FRONT_RIGHT I get 0x20000000. Your defines have them set as 0x1 and 0x2, which when expanded out at compile time equal 0x00000001 and 0x00000002 using printf %08x.

    Any idea on what is going on here?

  8. #8
    Join Date
    March 2010
    Location
    Tacoma
    Posts
    68
    Figured it out, Windows Audio Session does not return the same bit mask values as DirectSound (makes sense, since you are using DS define values)...

    You aren't planning on removing Direct Sound any time in the near future are you?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. NSA Data Collection
    By KwikKarl in forum General Questions
    Replies: 4
    Last Post: June 14th, 2013, 11:50 PM
  2. Client Crashdump Collection
    By ScP in forum Windows
    Replies: 643
    Last Post: May 24th, 2011, 07:23 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •