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 - Stefan1200

#2206
Quote2011-02-21 19:57:56   SHUTDOWN   Got signal from operating system, quitting now...
2011-02-21 19:57:56   STOP_ALL   Stopping all instances and quit manager...

Der Bot wird von dir scheinbar wieder beendet. Wie startest du den den und was machst du danach?
#2207
Quote from: CracK on February 21, 2011, 04:09:55 PM
Also ich sehe ja kein Bot bei mir im Teamspeak und habe mal !botinfo geschrieben aber nichts kommt ?

Nun, bei Standard Einstellungen vom TS3 Server ist der Bot auch unsichtbar, da es ein Telnet Client ist. Dazu gibt es den Punkt "Sichtbarkeit vom Bot" in der Anleitung vom Bot.

War eben kurz auf deinem Server, aber da war der Bot wohl aus. Wie gesagt, laut Log sollte der Bot laufen. Was steht den in der InstanceManager.log vom Bot?


Quote from: CracK on February 21, 2011, 04:09:55 PM
Und sorry ich meine ich benutze ja schon die "Download JTS3ServerMod 3.4.3 vom 13.12.2010" version alles von der Bielefeld Team Seite.

Auch die Version ist alt. Auf die Homepage von Team Bielefeld habe ich kein Zugriff, die Seite hängt in der Regel immer 1-2 Versionen hinterher.
#2208
Sieht doch alles soweit richtig aus.
Reagiert der Bot, wenn du im Server Chat !botinfo rein schreibst?

Außerdem solltest du den Bot mal aktualisieren, die Version 3.4.0 ist schon 4 Monate alt.
#2209
General Discussions / Re: Some questions about plugins
February 18, 2011, 01:21:47 PM
This source work here, tested with TS3 client beta 36:

main.cpp:
#include "main.h"

static struct TS3Functions ts3Functions;

#ifdef WINDOWS
#define _strcpy(dest, destSize, src) strcpy_s(dest, destSize, src)
#define snprintf sprintf_s
#else
#define _strcpy(dest, destSize, src) { strncpy(dest, src, destSize-1); dest[destSize-1] = '\0'; }
#endif

#define PATH_BUFSIZE 512
#define COMMAND_BUFSIZE 128

static char* pluginCommandID = NULL;

using namespace std;

/*********************************** Required functions ************************************/
/*
* If any of these required functions is not implemented, TS3 will refuse to load the plugin
*/

/* Unique name identifying this plugin */
const char* ts3plugin_name()
{
    return "TS3KickAll";
}

/* Plugin version */
const char* ts3plugin_version()
{
    return "0.1";
}

/* Plugin API version. Must be the same as the clients API major version, else the plugin fails to load. */
int ts3plugin_apiVersion()
{
return 8;
}

/* Plugin author */
const char* ts3plugin_author()
{
    return "Stefan1200/GodlySOB";
}

/* Plugin description */
const char* ts3plugin_description()
{
    return "Kicks people";
}

/* Set TeamSpeak 3 callback functions */
void ts3plugin_setFunctionPointers(const struct TS3Functions funcs)
{
    ts3Functions = funcs;
}

/*
* Custom code called right after loading the plugin. Returns 0 on success, 1 on failure.
* If the function returns 1 on failure, the plugin will be unloaded again.
*/
int ts3plugin_init()
{
    return 0;  /* 0 = success, 1 = failure */
}

/* Custom code called right before the plugin is unloaded */
void ts3plugin_shutdown()
{
    /* Your plugin cleanup code here */
    printf("TS3KickAll PLUGIN: shutdown\n");

/* Free pluginCommandID if we registered it */
if(pluginCommandID)
{
free(pluginCommandID);
pluginCommandID = NULL;
}
}

/*
* If the plugin wants to use plugin commands, it needs to register a command ID. This function will be automatically called after
* the plugin was initialized. This function is optional. If you don't use plugin commands, the function can be omitted.
* Note the passed commandID parameter is no longer valid after calling this function, so you *must* copy it and store it in the plugin.
*/
void ts3plugin_registerPluginCommandID(const char* commandID)
{
const size_t sz = strlen(commandID) + 1;
pluginCommandID = (char*)malloc(sz);
memset(pluginCommandID, 0, sz);
_strcpy(pluginCommandID, sz, commandID);  /* The commandID buffer will invalidate after existing this function */
printf("TS3KickAll PLUGIN: registerPluginCommandID: %s\n", pluginCommandID);
}

/* Plugin command keyword. Return NULL or "" if not used. */
const char* ts3plugin_commandKeyword()
{
return "a";
}

/* Plugin processes console command. Return 0 if plugin handled the command, 1 if not handled. */
int ts3plugin_processCommand(uint64 serverConnectionHandlerID, const char* command)
{
char buf[COMMAND_BUFSIZE];
char *s, *param1 = NULL, *param2 = NULL, *param3 = NULL, *kickReason = const_cast<char *>("");
int i = 0;
anyID myID;
enum { CMD_NONE = 0, CMD_KICK, CMD_KICKALL} cmd = CMD_NONE;
#ifdef WINDOWS
char* context = NULL;
#endif

printf("TS3KickAll PLUGIN: process command: '%s'\n", command);

_strcpy(buf, COMMAND_BUFSIZE, command);
#ifdef WINDOWS
s = strtok_s(buf, " ", &context);
#else
s = strtok(buf, " ");
#endif
while(s != NULL)
{
if(i == 0)
{
    if(!strcmp(s, "ka"))
{
cmd = CMD_KICKALL;
}
else if(!strcmp(s, "kickall"))
{
cmd = CMD_KICKALL;
}

}
else if(i == 1)
{
param1 = s;
}
else if(i == 2)
{
param2 = s;
}
else
{
param3 = s;
}
#ifdef WINDOWS
s = strtok_s(NULL, " ", &context);
#else
s = strtok(NULL, " ");
#endif
i++;
}

switch(cmd)
{
case CMD_NONE:
return 1;  /* Command not handled by plugin */
case CMD_KICKALL:
            /* Get own clientID */
            if(ts3Functions.getClientID(serverConnectionHandlerID, &myID) != ERROR_ok)
            {
                ts3Functions.logMessage("Error querying client ID", LogLevel_ERROR, "TS3KickAll Plugin", serverConnectionHandlerID);
                break;
            }

            anyID* clientList;
            if(ts3Functions.getClientList(serverConnectionHandlerID, &clientList) != ERROR_ok)
            {
                ts3Functions.logMessage("Error querying client list", LogLevel_ERROR, "TS3KickAll Plugin", serverConnectionHandlerID);
                break;
            }

            int clientCount = 0;
            int clientType;
            for(i=0; clientList[i]; i++)
            {
                if(ts3Functions.getClientVariableAsInt(serverConnectionHandlerID, clientList[i], CLIENT_TYPE, &clientType) != ERROR_ok)
                {
                    continue;
                }
                if (clientType == 1)
                {
                    continue;
                }
                if (myID == clientList[i])
                {
                    continue;
                }

                /* Request client kick from server */
                ts3Functions.requestClientKickFromServer(serverConnectionHandlerID, clientList[i], "kick reason", NULL);

                ++clientCount;
            }

            char buffer [50];
            sprintf (buffer, "Requested kick of %d clients!", clientCount);
            ts3Functions.printMessageToCurrentTab(buffer);

            ts3Functions.freeMemory(clientList);
            break;
}

return 0;  /* Plugin handled command */
}

bool isServerGroupIDinList(char* list, uint64 id)
{
    char* token = strtok(list,",");
    uint64 tmp = 0;
    while (token != NULL)
    {
        tmp = (uint64)atoi(token);
        if (id == tmp)
        {
            return true;
        }
        token = strtok(NULL,",");
    }

    return false;
}

bool isClientInList(anyID* clientList, anyID* clientID)
{
    for(int i=0; clientList[i]; i++)
    {
        if (clientList[i] == *clientID)
        {
            return true;
        }
    }

    return false;
}

/*
* Plugin requests to be always automatically loaded by the TeamSpeak 3 client unless
* the user manually disabled it in the plugin dialog.
* This function is optional. If missing, no autoload is assumed.
*/
int ts3plugin_requestAutoload()
{
return 1;  /* 1 = request autoloaded, 0 = do not request autoload */
}


main.h:
#ifndef PLUGIN_H
#define PLUGIN_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "include/public_errors.h"
#include "include/public_definitions.h"
#include "include/public_rare_definitions.h"
#include "include/ts3_functions.h"
#include "include/plugin_events.h"

#ifdef WIN32
#define PLUGINS_EXPORTDLL __declspec(dllexport)
#else
#define PLUGINS_EXPORTDLL __attribute__ ((visibility("default")))
#endif

#ifdef __cplusplus
extern "C" {
#endif

bool isClientInList(anyID* clientList, anyID* clientID);
bool isServerGroupIDinList(char* list, uint64 id);

/* Required functions */
PLUGINS_EXPORTDLL const char* ts3plugin_name();
PLUGINS_EXPORTDLL const char* ts3plugin_version();
PLUGINS_EXPORTDLL int ts3plugin_apiVersion();
PLUGINS_EXPORTDLL const char* ts3plugin_author();
PLUGINS_EXPORTDLL const char* ts3plugin_description();
PLUGINS_EXPORTDLL void ts3plugin_setFunctionPointers(const struct TS3Functions funcs);
PLUGINS_EXPORTDLL int ts3plugin_init();
PLUGINS_EXPORTDLL void ts3plugin_shutdown();

/* Optional functions */
PLUGINS_EXPORTDLL void ts3plugin_registerPluginCommandID(const char* commandID);
PLUGINS_EXPORTDLL const char* ts3plugin_commandKeyword();
PLUGINS_EXPORTDLL int ts3plugin_processCommand(uint64 serverConnectionHandlerID, const char* command);
PLUGINS_EXPORTDLL int ts3plugin_requestAutoload();

#ifdef __cplusplus
}
#endif

#endif


In TS3 client:
/a kickall

Output:
Requested kick of 2 clients!
#2210
General Discussions / Re: Some questions about plugins
February 18, 2011, 04:12:15 AM
I changed the printMessageToCurrentTab stuff at the end, look in my previous post.
#2211
General Discussions / Re: Some questions about plugins
February 18, 2011, 02:51:59 AM
Seems our messenger clients had some troubles :).

This is my idea of a kick all function, remember to change that first line (case CMD_KA) and the kick reason.

That piece of code is untested, don't know if the compiler would like that.

case CMD_KA:
/* Get own clientID */
if(ts3Functions.getClientID(serverConnectionHandlerID, &myID) != ERROR_ok)
{
ts3Functions.logMessage("Error querying client ID", LogLevel_ERROR, "TS3MassMover Plugin", serverConnectionHandlerID);
break;
}

anyID* clientList;
if(ts3Functions.getClientList(serverConnectionHandlerID, &clientList) != ERROR_ok)
{
ts3Functions.logMessage("Error querying client list", LogLevel_ERROR, "TS3MassMover Plugin", serverConnectionHandlerID);
break;
}

int clientErrorCount = 0;
int clientCount = 0;
int clientType;
for(i=0; clientList[i]; i++)
{
if(ts3Functions.getClientVariableAsInt(serverConnectionHandlerID, clientList[i], CLIENT_TYPE, &clientType) != ERROR_ok)
{
continue;
}
if (clientType == 1)
{
continue;
}
if (myID == clientList[i])
{
continue;
}

/* Move clients to specified channel */
if(ts3Functions.requestClientKickFromServer(serverConnectionHandlerID, clientList[i], "kick reason", NULL) != ERROR_ok)
{
++clientErrorCount;
}

++clientCount;
}

char buffer [50];
sprintf (buffer, "Kicked %d of %d clients!", (clientCount - clientErrorCount), clientCount);
ts3Functions.printMessageToCurrentTab(buffer);

ts3Functions.freeMemory(clientList);
break;
#2212
General Discussions / Re: Some questions about plugins
February 17, 2011, 11:02:26 PM
What is the exact problem you have? I am not very good with C++, because I am primary a Java developer.

Currently I have crashing problems with the Windows Teamspeak 3 client rc1-pre9. The last version I was able to create plugins was TS3 client beta 36. Maybe I am not the perfect guy to ask me C++ and TS3 Client Plugin development related questions :(. Sorry for this.
#2213
Quote from: Lars on February 15, 2011, 02:49:50 AM
Okay, Danke. Es gibt einen Bot für TS3 der das eingebaut hat (ts3phpbot), aber ich bevorzuge lieber den Java Bot.  :)
Vielleicht könnte man sich daran etwas orientieren, eventeull ist da ja ein ansatz bei. :)

Wie das mit dem Sticky Channel generell funktioniert, ist mir schon klar. Mir geht es eher darum, ob und wie das in meinem Bot eingebaut wird, damit er für Bot Neulinge nicht noch unverständlicher wird. Und generell wollte ich vorerst aus meinem Bot die weniger sinnvollen Sachen raus lassen.
#2214
Aktuell ist dies noch nicht mit dem Bot möglich. Desweiteren muss ich noch prüfen ob und wie ich das einbaue, da es nicht zu unübersichtlich werden soll.
#2215
Ok, Problem per ICQ gelöst.
Java war noch nicht installiert.

Nachtrag zu den Fragen:

Quote from: Patrick85 on January 29, 2011, 11:55:42 PM
1. Entpackt ist alles, jetzt habe ich ein Ordner der  JTS3ServerMod heißt. Was muss ich jetzt mit dem Ordner genau machen? Ich hab ihn jetzt so wie er ist auf meinen Server geladen. In das Teamspeak Verzeichniss. Weiß nicht ob das so richtig war. Steht auch nichts in der Anleitung

Der Ort kann frei gewählt werden und muss nicht im Teamspeak Ordner sein. Hauptsache die Ordnerstruktur wie in der ZIP Datei bleibt erhalten.


Quote from: Patrick85 on January 29, 2011, 11:55:42 PM
2.Ich habe die config mit meinen Serverdaten geändert und gespeichert. In der Anleitung steht irgendwas von utf 8 und iso speichern, k.p was ich damit anfangen soll. Ich habe alle Dateien so gelassen wie sie waren, nur meine Daten eingetragen und gespeichert. Ist das richtig so, oder muss ich da noch etwas machen?

UTF-8 / ISO sind Kodierungen von Textdateien. Solange nur Buchstaben und Zahlen ohne Umlaute und Sonderzeichen verwendet werden, ist dies relativ egal (da identisch). Aber bei deutschen Umlauten muss dies beachtet werden.

Die meisten Texteditoren bieten die Möglichkeit an, Dateien in UTF-8 (oder Unicode 8-Bit) abzuspeichern. Ich empfehle hier den kostenlosen Notepad++. Aber selbst der Windows Notepad bietet diese Möglichkeit im Menü unter "Datei" -> "Speichern unter".

In den Bot Einstellungen kann aber die Kodierung für die Nachrichten Dateien frei gewählt werden.


Quote from: Patrick85 on January 29, 2011, 11:55:42 PM
3. Dannach habe ich im Putty Screen aktiviert,bin in das Verzeichniss gegangen /home/ts3/teamspeak3-server_linux-x86/JTS3ServerMod/ und habe den Screenbefehl eingegeben:  screen -d -m -S ts3bot java -jar JTS3ServerMod.jar . Nur leider tut sich da garnichts.Keine Fehlermeldung oder sonst irgendwas.

Durch den screen Befehl wird auch keine Meldung ausgegeben. Entweder den screen öffnen (wie in der Bot Anleitung beschrieben) oder in der Log vom Bot schauen. Die Log Datei liegt im Normalfall im Ordner vom Bot.
#2216
Klingt auf jedenfall interessant, danke dafür.

Ich denke aber das ich auf das Plugin SDK für die RC1 Version warte, und dann direkt eine neue Version mit aktueller API Version veröffentliche. Mal sehen wann das Plugin SDK veröffentlicht wird, die pre RC1 vom Client ist ja schon draußen (leider bisher ohne neueres Plugin SDK).
#2217
Quote from: Unitec on December 29, 2010, 02:04:17 AM
Gibt es aber nicht die möglichkeit abzufragen ob ein User Spricht? TS3 mach dann ja das Lämpchen andersfarbig.

Nun, natürlich geht das. Aber in den meisten Away Channels, die ich kenne, kann man im Away Channel nicht sprechen (was auch Sinn macht, man geht ja in den Away Channel um nicht beschallt zu werden). Ergo kann man auch nicht mehr feststellen, ob man spricht.
#2218
Quote from: Unitec on December 25, 2010, 07:20:55 PM
Dein Problem ist das dein TS3 Server den Bot Bannt wegen zuvieler Commands in kurzer zeit.

Das Problem hatte ich bereits mit AgentNix_x3 per Messenger gelöst. Leider hat AgentNix_x3 nicht mehr hier rein geschrieben, wie er das gelöst hat.
#2219
Quote from: Unitec on December 25, 2010, 07:22:51 PM
Mein Bot ist unter Debian (Linux version 2.6.26-2-686 (Debian 2.6.26-25lenny1)) am Laufen Funktioniert auch! Nur haben Ich mit dem Idel Move ein kleines Problem.

Der Idler wird in den entsprechenden Channel verschoben aber nicht wieder zurück geholt.

Der Idle Mover kann dies auch nicht. Diese Funktion besitzten nur der Mute Mover und der Away Mover.
Beim Idle Mover wäre das technisch auch kaum realisierbar. Wie soll der Bot erkennen, wenn jemand nicht mehr idle ist? Dazu müsste der Client den Channel wechseln oder im Chat was schreiben. Macht also recht wenig Sinn.
#2220
Quote from: froesch on December 01, 2010, 05:00:57 PM
ich starte erst den ts server, logge mich mit client ein und dann nur die batch datei (fenster bleibt offen). danach bleibt nur logs checken. win7 sowie der ts3 server sind 64bit. hoffe das macht keine probleme.

ok batch hab ich abgeändert. steht ja nun nicht mehr viel drin ;-)

Hast du nochmal mit der neusten Bot Version getestet? Wie schaut es nun aus?