PDA

View Full Version : Triskle - Broadcast In-Game Voice Comm


Seta00
03-15-2011, 13:05
Triskle Beta 1

Don't use the current version of Triskle, it is barely functional and was only released so I could get more people to test it. I'll update the thread once I release the stable version, with authentication, optimizations and better Linux support.

Triskle is a SourceMod extension and a standalone client for OrangeBox gameservers administration.
It allows users to listen to in-game voice communcation using a small standalone client.

Instructions/Download: https://bitbucket.org/Seta00/triskle/

This is a beta release, there's still much to be improved.

Planned additions:
- Authentication
- Kick/ban players from the Triskle client
- Command line parameters

Known bugs: (that list is incomplete, feel free to submit new bugs) https://bitbucket.org/Seta00/triskle/issues?status=new&status=open

If you just wanna see how the client works, AlliedModders' Official TF2 Server (steam://connect/seta00.com:27015) is running the extension.

Like this? Wanna see more? Donate!
https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/btn/btn_donateCC_LG.gif (https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=ZX3L6WM7RDFNW&lc=BR&item_name=Reuben%20%27Seta00%27%20Morais&item_number=Triskle%20Thread&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3 aNonHosted)

Inflikted
03-15-2011, 13:42
running windows version. got voicehook running succesfully. got triskle loaded. but it says triskle_port is an unknown command.

also additionally.. you have to load in the triskle extension seperately after the server loads it seems.. voicehooks will load up.. but it will error and say "Unable to load extension 'triskle.ext'. The specific module could not be found."
I let the server fully load into the map.. then manually do sm exts load triskle and it loads fine

Seta00
03-15-2011, 13:46
running windows version. got voicehook running succesfully. got triskle loaded. but it says triskle_port is an unknown command.

Are you sure Triskle is loaded succesfully? What's the output of "sm exts list"?

EDIT: About that VoiceHook error, can you paste the error message?

Inflikted
03-15-2011, 13:52
when i type meta list i see asherkin metamod plugin loaded.

when i type sm exts list I don't see triskle loaded. but it says it loads sucessfully :\. i'm guessing it isn't loading at all. Since i can keep typing sm load triskle and it will keep saying it loads succesfully.

I have installed vaudio_speex.dll and libzmq.dll into the orangebox/bin folder as said and loaded voicehook sucesfully.

Sorry I wrote that top part wrong I meant to say I load voicehook succesfully but afterwards when triskle tries to load it says "Unable to load extension 'triskle.ext'. The specific module could not be found."

Seta00
03-15-2011, 13:56
I'm downloading a Windows server to test this :/

bl4nk
03-15-2011, 23:23
I'm having trouble starting up the client on Windows 7 Ultimate.

Peace-Maker
03-16-2011, 06:03
Same on Windows Vista Ultimate x64.
No error, just says the program no longer responds and searching for a solution, right after starting the client.

berni
03-16-2011, 06:05
Linux Debian Etch cstrike/orangebox srcds:


Program stopped at 0xaf6d698b.

Thread 1 (Thread 0xb7c936b0 (LWP 13055)):
#0 0xaf6d698b in Triskle::SDK_OnLoad () from /server/game/cstrike/test/orangebox/cstrike/addons/sourcemod/extensions/triskle.ext.so
#1 0xaf6d657f in SDKExtension::OnExtensionLoad () from /server/game/cstrike/test/orangebox/cstrike/addons/sourcemod/extensions/triskle.ext.so


Stack level 0, frame at 0xbfa3f3c0:
eip = 0xaf6d698b in Triskle::SDK_OnLoad(char*, unsigned int, bool); saved eip 0xaf6d657f
called by frame at 0xbfa3f410
Arglist at 0xbfa3f3b8, args:
Locals at 0xbfa3f3b8, Previous frame's sp is 0xbfa3f3c0
Saved registers:
ebx at 0xbfa3f3b0, ebp at 0xbfa3f3b8, esi at 0xbfa3f3b4, eip at 0xbfa3f3bc
Dump of assembler code for function _ZN7Triskle10SDK_OnLoadEPcjb:
0xaf6d68b0 <_ZN7Triskle10SDK_OnLoadEPcjb+0>: push %ebp
0xaf6d68b1 <_ZN7Triskle10SDK_OnLoadEPcjb+1>: mov %esp,%ebp
0xaf6d68b3 <_ZN7Triskle10SDK_OnLoadEPcjb+3>: push %esi
0xaf6d68b4 <_ZN7Triskle10SDK_OnLoadEPcjb+4>: push %ebx
0xaf6d68b5 <_ZN7Triskle10SDK_OnLoadEPcjb+5>: sub $0x50,%esp
0xaf6d68b8 <_ZN7Triskle10SDK_OnLoadEPcjb+8>: mov 0x8(%ebp),%esi
0xaf6d68bb <_ZN7Triskle10SDK_OnLoadEPcjb+11>: mov %gs:0x14,%eax
0xaf6d68c1 <_ZN7Triskle10SDK_OnLoadEPcjb+17>: mov %eax,-0xc(%ebp)
0xaf6d68c4 <_ZN7Triskle10SDK_OnLoadEPcjb+20>: xor %eax,%eax
0xaf6d68c6 <_ZN7Triskle10SDK_OnLoadEPcjb+22>: movl $0x1,(%esp)
0xaf6d68cd <_ZN7Triskle10SDK_OnLoadEPcjb+29>: call 0xaf6bdcb0 <zmq_init>
0xaf6d68d2 <_ZN7Triskle10SDK_OnLoadEPcjb+34>: test %eax,%eax
0xaf6d68d4 <_ZN7Triskle10SDK_OnLoadEPcjb+36>: mov %eax,0xaf6ea118
0xaf6d68d9 <_ZN7Triskle10SDK_OnLoadEPcjb+41>: je 0xaf6d69f0 <_ZN7Triskle10SDK_OnLoadEPcjb+320>
0xaf6d68df <_ZN7Triskle10SDK_OnLoadEPcjb+47>: movl $0x1,0x4(%esp)
0xaf6d68e7 <_ZN7Triskle10SDK_OnLoadEPcjb+55>: mov %eax,(%esp)
0xaf6d68ea <_ZN7Triskle10SDK_OnLoadEPcjb+58>: call 0xaf6bdc30 <zmq_socket>
0xaf6d68ef <_ZN7Triskle10SDK_OnLoadEPcjb+63>: test %eax,%eax
0xaf6d68f1 <_ZN7Triskle10SDK_OnLoadEPcjb+65>: mov %eax,0xaf6ea11c
0xaf6d68f6 <_ZN7Triskle10SDK_OnLoadEPcjb+70>: je 0xaf6d69b0 <_ZN7Triskle10SDK_OnLoadEPcjb+256>
0xaf6d68fc <_ZN7Triskle10SDK_OnLoadEPcjb+76>: mov 0xaf6ea13c,%ebx
0xaf6d6902 <_ZN7Triskle10SDK_OnLoadEPcjb+82>: mov 0x30(%ebx),%ecx
0xaf6d6905 <_ZN7Triskle10SDK_OnLoadEPcjb+85>: lea -0x2a(%ebp),%ebx
0xaf6d6908 <_ZN7Triskle10SDK_OnLoadEPcjb+88>: movl $0xaf6e5185,0x10(%esp)
0xaf6d6910 <_ZN7Triskle10SDK_OnLoadEPcjb+96>: movl $0x1e,0xc(%esp)
0xaf6d6918 <_ZN7Triskle10SDK_OnLoadEPcjb+104>: movl $0x1,0x8(%esp)
0xaf6d6920 <_ZN7Triskle10SDK_OnLoadEPcjb+112>: mov %ecx,0x14(%esp)
0xaf6d6924 <_ZN7Triskle10SDK_OnLoadEPcjb+116>: movl $0x1e,0x4(%esp)
0xaf6d692c <_ZN7Triskle10SDK_OnLoadEPcjb+124>: mov %ebx,(%esp)
0xaf6d692f <_ZN7Triskle10SDK_OnLoadEPcjb+127>: call 0xb7d8bb00 <__snprintf_chk>
0xaf6d6934 <_ZN7Triskle10SDK_OnLoadEPcjb+132>: mov 0xaf6ea11c,%edx
0xaf6d693a <_ZN7Triskle10SDK_OnLoadEPcjb+138>: mov %ebx,0x4(%esp)
0xaf6d693e <_ZN7Triskle10SDK_OnLoadEPcjb+142>: mov %edx,(%esp)
0xaf6d6941 <_ZN7Triskle10SDK_OnLoadEPcjb+145>: call 0xaf6bd610 <zmq_bind>
0xaf6d6946 <_ZN7Triskle10SDK_OnLoadEPcjb+150>: cmp $0xffffffff,%eax
0xaf6d6949 <_ZN7Triskle10SDK_OnLoadEPcjb+153>: je 0xaf6d69b0 <_ZN7Triskle10SDK_OnLoadEPcjb+256>
0xaf6d694b <_ZN7Triskle10SDK_OnLoadEPcjb+155>: mov 0xaf6ea0b8,%eax
0xaf6d6950 <_ZN7Triskle10SDK_OnLoadEPcjb+160>: mov (%eax),%edx
0xaf6d6952 <_ZN7Triskle10SDK_OnLoadEPcjb+162>: mov %ebx,0xc(%esp)
0xaf6d6956 <_ZN7Triskle10SDK_OnLoadEPcjb+166>: mov 0xaf6ea0a8,%ebx
0xaf6d695c <_ZN7Triskle10SDK_OnLoadEPcjb+172>: mov %eax,(%esp)
0xaf6d695f <_ZN7Triskle10SDK_OnLoadEPcjb+175>: movl $0xaf6e5190,0x8(%esp)
0xaf6d6967 <_ZN7Triskle10SDK_OnLoadEPcjb+183>: mov %ebx,0x4(%esp)
0xaf6d696b <_ZN7Triskle10SDK_OnLoadEPcjb+187>: call *0x18(%edx)
0xaf6d696e <_ZN7Triskle10SDK_OnLoadEPcjb+190>: mov 0xaf6ea0bc,%edx
0xaf6d6974 <_ZN7Triskle10SDK_OnLoadEPcjb+196>: lea 0x10(%esi),%ecx
0xaf6d6977 <_ZN7Triskle10SDK_OnLoadEPcjb+199>: add $0xc,%esi
0xaf6d697a <_ZN7Triskle10SDK_OnLoadEPcjb+202>: mov (%edx),%ebx
0xaf6d697c <_ZN7Triskle10SDK_OnLoadEPcjb+204>: mov %ecx,0x4(%esp)
0xaf6d6980 <_ZN7Triskle10SDK_OnLoadEPcjb+208>: mov %edx,(%esp)
0xaf6d6983 <_ZN7Triskle10SDK_OnLoadEPcjb+211>: call *0xc(%ebx)
0xaf6d6986 <_ZN7Triskle10SDK_OnLoadEPcjb+214>: mov 0xaf6ea114,%eax
0xaf6d698b <_ZN7Triskle10SDK_OnLoadEPcjb+219>: mov (%eax),%edx
0xaf6d698d <_ZN7Triskle10SDK_OnLoadEPcjb+221>: mov %eax,(%esp)
0xaf6d6990 <_ZN7Triskle10SDK_OnLoadEPcjb+224>: mov %esi,0x4(%esp)
0xaf6d6994 <_ZN7Triskle10SDK_OnLoadEPcjb+228>: call *(%edx)
0xaf6d6996 <_ZN7Triskle10SDK_OnLoadEPcjb+230>: mov $0x1,%eax
0xaf6d699b <_ZN7Triskle10SDK_OnLoadEPcjb+235>: mov -0xc(%ebp),%edx
0xaf6d699e <_ZN7Triskle10SDK_OnLoadEPcjb+238>: xor %gs:0x14,%edx
0xaf6d69a5 <_ZN7Triskle10SDK_OnLoadEPcjb+245>: jne 0xaf6d6a16 <_ZN7Triskle10SDK_OnLoadEPcjb+358>
0xaf6d69a7 <_ZN7Triskle10SDK_OnLoadEPcjb+247>: add $0x50,%esp
0xaf6d69aa <_ZN7Triskle10SDK_OnLoadEPcjb+250>: pop %ebx
0xaf6d69ab <_ZN7Triskle10SDK_OnLoadEPcjb+251>: pop %esi
0xaf6d69ac <_ZN7Triskle10SDK_OnLoadEPcjb+252>: pop %ebp
0xaf6d69ad <_ZN7Triskle10SDK_OnLoadEPcjb+253>: ret
0xaf6d69ae <_ZN7Triskle10SDK_OnLoadEPcjb+254>: xchg %ax,%ax
0xaf6d69b0 <_ZN7Triskle10SDK_OnLoadEPcjb+256>: mov 0xaf6ea0b8,%ebx
0xaf6d69b6 <_ZN7Triskle10SDK_OnLoadEPcjb+262>: mov (%ebx),%ecx
0xaf6d69b8 <_ZN7Triskle10SDK_OnLoadEPcjb+264>: mov 0x1c(%ecx),%ebx
0xaf6d69bb <_ZN7Triskle10SDK_OnLoadEPcjb+267>: call 0xaf6bd330 <zmq_errno>
0xaf6d69c0 <_ZN7Triskle10SDK_OnLoadEPcjb+272>: mov %eax,(%esp)
0xaf6d69c3 <_ZN7Triskle10SDK_OnLoadEPcjb+275>: call 0xaf6bdd80 <zmq_strerror>
0xaf6d69c8 <_ZN7Triskle10SDK_OnLoadEPcjb+280>: movl $0xaf6e513c,0x8(%esp)
0xaf6d69d0 <_ZN7Triskle10SDK_OnLoadEPcjb+288>: mov %eax,0xc(%esp)
0xaf6d69d4 <_ZN7Triskle10SDK_OnLoadEPcjb+292>: mov 0xaf6ea0a8,%eax
0xaf6d69d9 <_ZN7Triskle10SDK_OnLoadEPcjb+297>: mov 0xaf6ea0b8,%esi
0xaf6d69df <_ZN7Triskle10SDK_OnLoadEPcjb+303>: mov %eax,0x4(%esp)
0xaf6d69e3 <_ZN7Triskle10SDK_OnLoadEPcjb+307>: mov %esi,(%esp)
0xaf6d69e6 <_ZN7Triskle10SDK_OnLoadEPcjb+310>: call *%ebx
0xaf6d69e8 <_ZN7Triskle10SDK_OnLoadEPcjb+312>: xor %eax,%eax
0xaf6d69ea <_ZN7Triskle10SDK_OnLoadEPcjb+314>: jmp 0xaf6d699b <_ZN7Triskle10SDK_OnLoadEPcjb+235>
0xaf6d69ec <_ZN7Triskle10SDK_OnLoadEPcjb+316>: lea 0x0(%esi,%eiz,1),%esi
0xaf6d69f0 <_ZN7Triskle10SDK_OnLoadEPcjb+320>: mov 0xaf6ea0b8,%edx
0xaf6d69f6 <_ZN7Triskle10SDK_OnLoadEPcjb+326>: mov (%edx),%eax
0xaf6d69f8 <_ZN7Triskle10SDK_OnLoadEPcjb+328>: mov 0x1c(%eax),%ebx
0xaf6d69fb <_ZN7Triskle10SDK_OnLoadEPcjb+331>: call 0xaf6bd330 <zmq_errno>
0xaf6d6a00 <_ZN7Triskle10SDK_OnLoadEPcjb+336>: mov %eax,(%esp)
0xaf6d6a03 <_ZN7Triskle10SDK_OnLoadEPcjb+339>: call 0xaf6bdd80 <zmq_strerror>
0xaf6d6a08 <_ZN7Triskle10SDK_OnLoadEPcjb+344>: movl $0xaf6e5118,0x8(%esp)
0xaf6d6a10 <_ZN7Triskle10SDK_OnLoadEPcjb+352>: mov %eax,0xc(%esp)
0xaf6d6a14 <_ZN7Triskle10SDK_OnLoadEPcjb+356>: jmp 0xaf6d69d4 <_ZN7Triskle10SDK_OnLoadEPcjb+292>
0xaf6d6a16 <_ZN7Triskle10SDK_OnLoadEPcjb+358>: call 0xb7d8dcd0 <__stack_chk_fail>

asherkin
03-16-2011, 07:30
I'm having trouble starting up the client on Windows 7 Ultimate.

Same on Windows Vista Ultimate x64.
No error, just says the program no longer responds and searching for a solution, right after starting the client.

Download the libzmq.zip on the download page and replace the files included with the client, this fixed it for the other people with the same issue.

Linux Debian Etch cstrike/orangebox srcds:

AT&T assembly? seriously? can anyone actually read that mess of % signs :3.

berni
03-16-2011, 07:48
AT&T assembly? seriously? can anyone actually read that mess of % signs :3.

It's good enough to compare it with the source code and find the code line where it crashes.

Seta00
03-16-2011, 13:13
AT&T assembly? seriously? can anyone actually read that mess of % signs :3.

GoD-Tony
03-16-2011, 14:37
Wow, this sounds great. I'll check it out when I get a chance and let you know how it goes.

Nice work!

Seta00
03-16-2011, 16:06
@berni:
Try installing the libzmq package from your distribution's repostitory and symlinking libzmq.so.1 in orangebox/bin to the version installed by the package manager.

@GoD-Tony:
Looking forward to your report :)

GoD-Tony
03-23-2011, 07:52
Changing the triskle_port cvar to anything causes the server to hang. Even "triskle_port 26000". Windows, CS:S. Otherwise the extension worked during my tests.

Looking forward to getting this running, but with multiple servers I would need to use different ports.

Seta00
03-23-2011, 12:33
Changing the triskle_port cvar to anything causes the server to hang. Even "triskle_port 26000". Windows, CS:S. Otherwise the extension worked during my tests.

Looking forward to getting this running, but with multiple servers I would need to use different ports.

Confirmed, but I have no idea why it's doing that. I'll investigate further.

The next release will be after ZeroMQ 3.0 ships (or before if I find what's causing the problem above and fix it). In the mean time I'll try to sort the client issues.

asherkin
03-23-2011, 12:48
Confirmed, but I have no idea why it's doing that. I'll investigate further.

The next release will be after ZeroMQ 3.0 ships (or before if I find what's causing the problem above and fix it). In the mean time I'll try to sort the client issues.

My guess is it's because of how you are registering the CVar. Not that changing it would do anything anyway, since you only read it on load and don't add a change hook to it.

Seta00
03-23-2011, 18:23
Not that changing it would do anything anyway, since you only read it on load and don't add a change hook to it.

sshhhh

Seta00
03-25-2011, 14:19
I've added a small fake server to test the client without having to start/join a server.
Source is here: https://bitbucket.org/Seta00/triskle/src/tip/fakeserver/
If anyone is interested but cba to build it I can upload builds to the downloads page.

grif_ssa
04-04-2011, 21:04
Hi, sorry, but maybe you ccan help with voice extractor?
http://forums.alliedmods.net/showthread.php?t=154241

berni
04-05-2011, 17:35
@berni:
Try installing the libzmq package from your distribution's repostitory and symlinking libzmq.so.1 in orangebox/bin to the version installed by the package manager.

This package doesn't seem to exist in the debian lenny repo.

Fearts
04-24-2011, 21:52
added: voicehook_mm.dll to addons folder.
placed addons/voicehook_mm to metaplugins.ini
added: vaudio_speex.dll to orangebox\bin
Restart server
Meta list shows VoiceHook is loaded

added: triskle.autoload and triskle.ext.dll to sourcemod/extensions
added: libzmq.dll to orangebox\bin
Restarted server
sm plugins exts shows:

L 04/24/2011 - 18:35:30: SourceMod error session started
L 04/24/2011 - 18:35:30: Info (map "surf_greatriver") (file "errors_20110424.log")
L 04/24/2011 - 18:35:30: [SM] Unable to load extension "triskle.ext": The specified module could not be found.

Any help?

Atreus
08-31-2011, 02:52
Any news on this? I (and the other admins on my server) love Triskle, but it's been 'unstable' as mentioned in the op with no way to even try a build for ages :(

FunkyLoveCow
12-29-2011, 21:54
Any chance there has been work done on this?

asherkin
12-29-2011, 21:55
There is 2 in-progress rewrites that were sort-of-converging, nothing's been done in a month or so though.

Seta00
12-29-2011, 22:39
Yes, there's been work done on this, it's mostly working but not polished and the client still needs some work.

@asherkin, did you make any progress with your client? I'm not particularly interested in finishing up/releasing/supporting this one.

Dr. McKay
01-06-2012, 20:32
Ooh, I'd love to see this stabilized. I don't even care about features, I'd just like a way to hear what's going on without being in-game. I'd work on it myself, but alas, I know nothing about C++.

Fearts
01-06-2012, 22:57
Ooh, I'd love to see this stabilized. I don't even care about features, I'd just like a way to hear what's going on without being in-game. I'd work on it myself, but alas, I know nothing about C++.

+1

asherkin
01-07-2012, 15:07
I'd work on it myself, but alas, I know nothing about C++.

How about Java?

Dr. McKay
01-07-2012, 15:27
How about Java?

I know how to Hello World in Java, but that's about it.

Unreal1
01-07-2012, 15:47
I know C++ and Java. The problem isn't having experience with the language, its about knowing all the needed libraries.

asherkin
01-07-2012, 15:55
All that's left for mine is a GUI for the client, all the actual networking and voice decoding is complete.

FunkyLoveCow
05-19-2012, 14:05
I hate to poke a dead thread, but how are those two rewrites going?

Seta00
05-19-2012, 15:55
I hate to poke a dead thread, but how are those two rewrites going?

I'm no longer working on this. The extension rewrite got to a point where I could use it, I used it for a couple months on two CS:S servers and one TF2 server, then I lost interest in the project. Triskle won't have a proper client unless someone writes one. The extension code has components that can (and should) be re-used when creating a client. One would have to create the graphical interface, plug the GUI components to the right methods, and of course use some audio playback API to actually play the voice comm. This might be of use to anyone working on this: https://gist.github.com/2732194 it's a Qt runnable class that does the ØMQ networking and passes messages to listeners. The rest of the code (extension and common components) are here: https://github.com/reubenmorais/triskle

Atreus
11-24-2012, 05:51
Is there anyone who would be interested in building a GUI in the way seta mentioned above? I'm still making use of the original Triskle client, as, although the audio quality is poor (at best), is still a way to hear audio without having to be in-server and it would be amazing to have one that works properly

I'm actually really surprised this hasn't gotten more attention, even when it was being actively worked on, given what a fantastic tool it is.

Atreus
11-27-2012, 03:14
I should add that I'm willing to pay. So, I'm looking both for
(a) someone willing to chip in with me, whatever the amount you can offer up, or
(b) a dev willing to take on the project based on the above.

My intentions as of now are that the result would be publicly posted for everybody to make use of. I can't afford a huge amount, which is why I'm hoping there are other people interested.

To touch on the comment of the (lack of) interest: Is there some alternative tool I don't know about? I know SourceOP used to have it as a feature, but when I tried installing it, my server would just crash repeatedly :/

Atreus
05-01-2013, 07:08
It's-been-like-5-months-so-I'm-going-to-bump-it-once-more bump. I still use the beta that was put out ages ago before he removed the link, and while it's imperfect, it's still a hell of a lot better than having to go into the server every time you want to verify a complaint regarding voice.

Prof. Orribilus
08-12-2013, 18:33
How does development proceed?

DJPlaya
07-18-2016, 21:35
Cant access Bitbucket, can someone up the source?