Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - DreamGamer

#16
Hat die ReasonID vllt. damit etwas zu tun ?
#17
ohhh. Danke habe gedacht das wäre beides clid. Das erklärt alles. Danke für die Hilfe erneut.


Aber wenn ich ctid Abfrage bekomme ich ja immer die ID des Channels nicht gesagt ob er gemoved wurde oder denn channel gewechselt hat.
#18
Dort steht aber nur clid und reasonid. clid ist der Grund und was reasonid sein soll verstehe ich nicht weil es immer 0 ist. und mehr sehe ich dort nicht.

Mehr als das steht dort nicht.
#19
Eine schnelle Frage. In den Docs die beim Download dabei sind steht zwar welche EventTypen es gibt aber nicht welche EventInfos. Kann man dies irgendwo sehen ?

bzw. Wenn ich im EventType notifyclientmoved bin und diesen Code ausführen will:

query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CLIENT, "Channel Changed: " + var);


Kriege ich als Fehler "numberformatexception" und das in dieser Zeile und zwar weil das hier: "Integer.parseInt(eventInfo.get("invokerid"))" null ist. Und ich denke mal weil es halt bei clientmoved nichtmehr invokerid ist oder ?
#20
ohhh ich habe garnicht gesehen das es im EvenType "notifytextmessage" war jetzt funktioniert es :)

Danke nochmals für die Hilfe. Ich hoffe dass das jetzt alle Probleme waren.
#21
Gibt es mehr Events als diese 5 ?

query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTSERVER, 0);
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTCHANNEL, 0);
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTPRIVATE, 0);
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_CHANNEL, 0);
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_SERVER, 0);
#22
Update bin zurzeit nicht Zuhause kann erst ab morgen 20 Uhr den Source Code schicken.

Weiter geht es. Also mein Kompletter Source Code sieht zurzeit so aus:


package de.stefan1200.jts3serverqueryexample;

import java.io.PrintStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;

import de.stefan1200.jts3serverquery.JTS3ServerQuery;
import de.stefan1200.jts3serverquery.TS3ServerQueryException;
import de.stefan1200.jts3serverquery.TeamspeakActionListener;

public class JTS3ServerQueryExample implements TeamspeakActionListener
{
JTS3ServerQuery query;
boolean debug = true; // Set to true if you want to see all key / values

public static void main(String[] args)
throws Exception
{
JTS3ServerQueryExample jts3 = new JTS3ServerQueryExample();

jts3.runServerMod();
}

/*
* Just output all key / value pairs
*/
void outputHashMap(HashMap<String, String> hm, PrintStream stream)
{
if (hm == null)
{
return;
}

    Collection<String> cValue = hm.values();
    Collection<String> cKey = hm.keySet();
    Iterator<String> itrValue = cValue.iterator();
    Iterator<String> itrKey = cKey.iterator();

while (itrValue.hasNext() && itrKey.hasNext())
{
stream.println(itrKey.next() + ": " + itrValue.next());
}
}

public void teamspeakActionPerformed(String eventType, HashMap<String, String> eventInfo)
{
if (debug) System.out.println(eventType + " received");
if (debug) outputHashMap(eventInfo, System.out);


if (eventInfo.get("msg").equalsIgnoreCase("liste"))
{
try {

Vector<HashMap<String, String>> dataClientServerGroups = query.getList(JTS3ServerQuery.LISTMODE_CLIENTDBLIST);
StringBuffer sb = new StringBuffer();
for (HashMap<String, String> hashMap : dataClientServerGroups)
{
if (debug) outputHashMap(hashMap, System.out);
if (sb.length() > 0)
{
sb.append(", ");
}
sb.append(hashMap.get("channel_name"));
}
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CLIENT, "Alle Channel: " + sb.toString());


} catch (Exception e) {
e.printStackTrace();
try
{
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CLIENT, "An error occurred: " + e.toString());
}
catch (Exception e2) { /* do nothing */ }
}
}
else if (eventType.equals("notifyclientmoved"))
{
try {

System.out.println("Channel Switched");
String var = eventInfo.get("ctid ");
try {
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CHANNEL, "Channel Changed" + var);
} catch (Exception e2) { /* do nothing */ }


} catch (Exception e) {
e.printStackTrace();
try
{
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CLIENT, "An error occurred: " + e.toString());
}
catch (Exception e2) { /* do nothing */ }
}

}
}



void runServerMod()
throws Exception
{
query = new JTS3ServerQuery();

try
{
// Connect to TS3 Server, set your server data here
query.connectTS3Query("localhost", 10011);

// Login with an server query account. If needed, uncomment next line!
query.loginTS3("serveradmin", "11111111");

// Set our class for receiving events
query.setTeamspeakActionListener(this);

// Select virtual Server
query.selectVirtualServer(1);
query.changeThreadName("TestBot");
query.setDisplayName("TestBot");

// Register some events
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTSERVER, 0); // Server Chat event
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTCHANNEL, 0);  // Channel Chat event
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_TEXTPRIVATE, 0);  // Private Chat event
query.addEventNotify(JTS3ServerQuery.EVENT_MODE_CHANNEL, 0);
}
catch (TS3ServerQueryException sqe)
{
System.err.println("An error occurred while connecting to the TS3 server, stopping now! More details below.");

if (sqe.getFailedPermissionID() >= 0)
{
HashMap<String, String> permInfo = null;
try
{
// This needs the permission b_serverinstance_permission_list
permInfo = query.getPermissionInfo(sqe.getFailedPermissionID());
System.err.println("Missing permission:");
outputHashMap(permInfo, System.err);
}
catch (Exception e)
{
// Ignore this exception to make sure, that a missing b_serverinstance_permission_list don't quit this program.
}
}

throw sqe;
}
catch (Exception e)
{
System.err.println("An error occurred while connecting to the TS3 server, stopping now! More details below.");
throw e;
}

System.out.println("You can now chat with this program, using server chat,");
System.out.println("channel chat (in default channel) or by private messaging the query connection!");
System.out.println("Commands are (some might need serveradmin permissions):");
System.out.println("!channellist");
System.out.println("!clientlist");
System.out.println("!logview");
System.out.println("!myservergroups");
System.out.println("!serverinfo");
System.out.println("!quitbot");
System.out.println();

while(true)
{
try
{
/*
* Make sure that the Java VM don't quit this program.
*/
Thread.sleep(100);
}
catch (Exception e)
{
}
}
}
}

#23
Aber es passiert immer noch nichts wenn ich einen Channel Wechsel oder jemanden move warum das ?

UPDATE:

Ich habe bis jetzt das hier als Script aber ich verstehe nicht warum es nicht Funktioniert es scheitert ja bei der else if Abfrage.

else if (eventType.equals("notifyclientmoved"))
{
try {

System.out.println("Channel Switched");
String var = eventInfo.get("ctid ");
try {
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CHANNEL, "Channel Changed" + var);
} catch (Exception e2) { /* do nothing */ }


} catch (Exception e) {
e.printStackTrace();
try
{
query.sendTextMessage(Integer.parseInt(eventInfo.get("invokerid")), JTS3ServerQuery.TEXTMESSAGE_TARGET_CLIENT, "An error occurred: " + e.toString());
}
catch (Exception e2) { /* do nothing */ }
}

}
#24
Ahh ok. also ist es so richtig ?
else if (eventType.equals("notifyclientmoved"))
{
System.out.println("Channel Switched");

}
#25
Also wenn ich das richtig verstanden habe soll ich halt bei eventInfo "notifyclientmoved" abfragen. Und ich habe dann dieses hier geschrieben else if (eventInfo.get("notifyclientmoved") == "2")
{
System.out.println("Channel Switched");

}

Aber irgendwie funktioniert es nicht. Und das Problem es gibt keine Fehler Meldung. Ich denke mal der Fehler ist offensichtlich aber ich checke ihn einfach nicht.

#26
Ok. Für den TeamspeakActionListener gibt es kein Example oder ?
#27
Ok ich glaube ich habe es herausgefunden. Aber ein Problem gibt es noch. Wenn man wie im Example das hier z.b Abfragt: Vector<HashMap<String, String>> dataClientServerGroups = query.getList(JTS3ServerQuery.LISTMODE_CLIENTDBLIST);
StringBuffer sb = new StringBuffer();
for (HashMap<String, String> hashMap : dataClientServerGroups)
{
if (debug) outputHashMap(hashMap, System.out);
if (sb.length() > 0)
{
sb.append(", ");
}
sb.append(hashMap.get("channel_name"));
}


Woher weiß man was man bei hashMap.get eintragen soll ?
#28
Also ich wollte für meinen TS ein Bot entwerfen der nachschaut wer channel spammt und diese Leute automatisch kickt oder den Rang NoMove für x Sekunden gibt. Ich habe aber noch nicht etwas mit JTSQuery gemacht habe schon viele in Java Halt gemacht aber noch nie Richtung Teamspeak. In der Example Datei habe ich schon viel gelernt aber halt so etwas wie auslesen wer den Channel wann gewechselt hat eben noch nicht.
#29
Sorry aber ich verstehe das nicht so ganz gibt es dafür vllt. auch ein Example ?
#30
Hallo,
Ich hätte mal eine Frage ich habe jetzt Zwei Tage versucht es selbst herauszufinden aber bin nicht besonders weit gekommen. Ich möchte gerne auflisten wer und wann eine Person den Channel wechselt aber nur wenn er ihn selber wechselt nicht gemoved wird. Und das Event Channel habe ich schon drin bzw. registriert.

LG DreamGamer