Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Nov 24 11:56
    PrinzKenny1 closed #335
  • Nov 18 20:43
    Likqez commented #343
  • Nov 17 14:32
    Likqez commented #343
  • Nov 17 09:55
    Likqez commented #343
  • Nov 16 17:21
    rogermb commented #343
  • Nov 15 18:27
    Likqez commented #343
  • Nov 13 18:07
    Likqez reopened #343
  • Nov 13 18:07
    Likqez commented #343
  • Nov 11 13:04
    Likqez closed #343
  • Nov 11 13:04
    Likqez commented #343
  • Nov 10 22:56
    rogermb commented #340
  • Nov 10 22:56
    rogermb labeled #340
  • Nov 10 22:51
    rogermb commented #343
  • Nov 10 22:48
    Likqez commented #340
  • Nov 10 22:47
    Likqez edited #343
  • Nov 10 22:47
    Likqez edited #343
  • Nov 10 22:47
    Likqez edited #343
  • Nov 10 22:46
    Likqez edited #343
  • Nov 10 22:46
    Likqez opened #343
  • Nov 10 15:05
    Rindula closed #339
Roger Baumgartner
@rogermb
... you just use TS3Api#getClients. Why would you not want to use that method that does exactly what you need it to do?
JenkePlays
@JenkePlays_twitter
I want to have from all clients the server group and only the people who are in a certain group but without api.getClients (); Because it takes too long to get all the clients through.
Roger Baumgartner
@rogermb
If it takes too long you're doing something wrong. Apart from that: TS3Api#getServerGroupClients(int), where the parameter is the ID of the server group you're interested in.
JenkePlays
@JenkePlays_twitter
for (Client client : api.getClients()) {
if (client.isInServerGroup(20) || client.isInServerGroup(24) || client.isInServerGroup(21) || client.isInServerGroup(22)) {
I make this so
Roger Baumgartner
@rogermb
Sure, and what are you doing with each of these clients?
JenkePlays
@JenkePlays_twitter
Iam poke the Clients
Roger Baumgartner
@rogermb

And that's what takes most of the time - no matter whether you're using TS3Api#getClients() or TS3Api#getServerGroupClients(int)

Actually, getClients is most likely faster if you have to check multiple server groups as it only involves a single API call

By default, TS3 servers only allow you to send 3 commands per second. That's why poking several people takes so long.
JenkePlays
@JenkePlays_twitter
And there is no solution to make it faster?
Roger Baumgartner
@rogermb
If you need faster rates than that, you need to whitelist the IP of your server query and then use FloodRate.UNLIMITED
For the former, look it up in the TS3 manual. The latter: Read through the README file of our API.
JenkePlays
@JenkePlays_twitter
How can I find tge IO of my Server Query ?
Roger Baumgartner
@rogermb
Run this from the computer you run your query from
Or if you run the query on the same machine as your server, you don't need to whitelist it
JenkePlays
@JenkePlays_twitter
How can I make the FloodRate Unlimited ?
Roger Baumgartner
@rogermb
TS3Config#setFloodRate
JenkePlays
@JenkePlays_twitter
Thank You its work.
JenkePlays
@JenkePlays_twitter
I become a Error: Exception in thread "[TeamSpeak-3-Java-API] SocketWriter" java.lang.NullPointerException
at com.github.theholywaffle.teamspeak3.commands.CommandEncoding.encode(CommandEncoding.java:34)
at com.github.theholywaffle.teamspeak3.commands.parameter.KeyValueParam.build(KeyValueParam.java:55)
at com.github.theholywaffle.teamspeak3.commands.parameter.Parameter.toString(Parameter.java:35)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.github.theholywaffle.teamspeak3.commands.Command.toString(Command.java:120)
at com.github.theholywaffle.teamspeak3.SocketWriter.run(SocketWriter.java:58)
Does anyone know why this is ?
Roger Baumgartner
@rogermb
One of your arguments to an API call was null
JenkePlays
@JenkePlays_twitter
                        api.editChannel(36, Collections.singletonMap(ChannelProperty.CHANNEL_PASSWORD, null));
Is this the Error ?
Roger Baumgartner
@rogermb
Yeah
Why would you do this??
JenkePlays
@JenkePlays_twitter
I will set the Password off.
How can i set the password off =
Roger Baumgartner
@rogermb
""
If the empty string doesn't work, you most likely can't change the password from a server query anyways
JenkePlays
@JenkePlays_twitter
ohhh, iam stupid :D
JenkePlays
@JenkePlays_twitter
How can i get the idle time of a player ?
OVer the Clientinfo ?
Roger Baumgartner
@rogermb
Dude, you're really starting to stretch it. I'm not your personal "google" - use your own brain.
If you're using an IDE, type "idle" and look for any suggestions. If you don't have an IDE, open the file ClientInfo.java and use a search function to look for "idle"
JenkePlays
@JenkePlays_twitter
Thx
Henny022
@Henny022
if you want to work with command args, this is a very nice solution
´´´String args[] = message.split(" ");´´´
String args[] = message.split(" ");
kreidlerflorett
@kreidlerflorett

@rogermb

This wouldn't happen if the API just set overwrite=1 instead of 0. However, I was (probably being overly cautious) afraid of a CRC32 hash collision happening. Basically, I wanted to exclude the possibility of people uploading an icon to the TS3 server which didn't already exist on there and it removing / changing an existing icon to that uploaded icon. At least this way you know that a "collision" has happened and can take the appropriate steps to resolve it

Hmmm, I have sometime problems with the CRC32. How do you mean that with overwrite=1?

How could I do that?
Roger Baumgartner
@rogermb
If you get a collision, you're most likely trying to upload the same icon twice.
Overwriting is in almost every situation the wrong response
JoKer96 | 😴
@JoKer96__twitter

Hey there, i have another Problem.
I try to create a Subchannel, move a client, from the channel above in the subchannel, change the channel to a temporary one and give the client a specific channel group.
But it won't work, the channel is created, and modified to a temporary one, but noething more...
Here is my Code:

// ---- Channel Creation ----
System.out.println("Create Channel");
// Let's customize our channel
final HashMap<ChannelProperty, String> properties = new HashMap<ChannelProperty, String>();
// Make it a permanent channel
properties.put(ChannelProperty.CHANNEL_FLAG_PERMANENT, "1");
// Make it a subchannel of the channel, the user joint.
int mainChannel = headChannelId;
properties.put(ChannelProperty.CPID, String.valueOf(mainChannel));

// Create the (sub-)channel
String name = "";
try {
    name = Core.asyncApi.getChannelInfo(headChannelId).get().getName() + " Ch1";
} catch (InterruptedException ex) {
    ex.printStackTrace();
}

Core.asyncApi.createChannel(name, properties);

// ---- Move user to the created (sub-)channel ----
System.out.println("Move User");
int newChannelId = -1;
try {
newChannelId = Core.asyncApi.getChannelByNameExact(name, false).get().getId();
} catch (InterruptedException ex) {
ex.printStackTrace();
}

if (newChannelId != -1) {
    Core.asyncApi.moveClient(clientId, newChannelId);
}

// ---- Make the channel temporary ----
System.out.println("Make Channel temporary");
HashMap<ChannelProperty, String> newProperties = new HashMap<ChannelProperty, String>();

newProperties.put(ChannelProperty.CHANNEL_FLAG_PERMANENT, "0");
newProperties.put(ChannelProperty.CHANNEL_FLAG_TEMPORARY, "1");

Core.asyncApi.editChannel(newChannelId, newProperties);

// ---- Set the channel-group for the user ----
System.out.println("Set the Channelgroup");
int channelGroupId = 28;
int channelId = newChannelId;
int clientDBId = clientId;

Core.asyncApi.setClientChannelGroup(channelGroupId, channelId, clientDBId);

// ---- Done ----

Maybe you can help me out?

The code again, this time on hastebin... https://hastebin.com/ekapusibik.cs
Roger Baumgartner
@rogermb
Dude, why are you using the asynchronous API like this??
Core.asyncApi.createChannel(name, properties);
is not done when you call
newChannelId = Core.asyncApi.getChannelByNameExact(name, false).get().getId();
And createChannel already returns the ID of the new channel, so that second API call is unnecessary
The whole channel properties map also isn't needed. New channels are temporary by default.
Seriously, just use the normal synchronous API in your code and your problems will magically solve temselves :stuck_out_tongue:
Henny022
@Henny022
is there something like a syncronize() method in the async API?