Beiträge von Beavis

    Wie ihr es wisst, arbeite ich und xGreekz7x an einer Include die es möglich macht euren Server mit einen Teamspeak zu verbinden.


    Das was ihr nur braucht ist:


    Der Serveradmin Account mit passwort (bekommt man bei der Installation angezeigt)
    Die IP und den Port von den TS (Standart 9987)
    Und den Queryport des TS (Standart 10011)


    Die Ganzen Funktionen im Überblick:
    native ts_connect(tsip[],tsuser[],tspass[],tsbotname[],tsport=9987,tsqueryport=10011,phphost[]="beavis.cc/ts/ts3.php");
    native ts_kick(playerid, uID[], const reason[]=" ");
    native ts_ban(playerid, uID[], const reason[]= " ", time=0);
    native ts_move(playerid, uID[], const ts_channel[], ts_channelkey[]=" ");
    native ts_createchannel(playerid, const cannelname[], const channeltopic[]=" ");
    native ts_createsubchannel(playerid, const cannelname[], const channeltopic[], const whatchannel[]);
    native ts_removechannel(playerid, const channelname[]);
    native ts_addservergroup(playerid, uID[], const servergroup[]);
    native ts_removeservergroup(playerid, uID[], const servergroup[]);
    native ts_addchannelgroup(playerid, uID[], const channel[], const channelgroup[]);
    native ts_removechannelgroup(playerid, uID[], const channel[]);
    native ts_givetalkpower(playerid, uID[]);
    native ts_taketalkpower(playerid, uID[]);
    native ts_createservertoken(playerid, const servergroup[]);
    native ts_createchanneltoken(playerid, const channel[], const channelgroup[]);
    native ts_tokendelete(playerid, const token[]);
    native ts_chanelmove(playerid, const channel[], const tochannel[]);
    native ts_poke(playerid, uID[], const message[]);
    native ts_clientcheck();


    Wir haben uns dazu entschieden, die einzelnen Funktionen auch zu beschreiben ;) (Spart das durcheinander hier im Post)


    Was wichtig ist in der Beta Phase:
    Die Funktion
    ts_connect(tsip[],tsuser[],tspass[],tsbotname[],tsport=9987,tsqueryport=10011,phphost[]="beavis.cc/ts/ts3.php")
    Der letzte Wert darf nicht geändert werden!
    Sobald das php Script freigegeben ist, könnt ihr da den pfad angeben aber das kommt alles noch ;)


    Desweiteren ist die Funktion in der Doku nicht erwähnt:
    native ts_clientcheck();
    Die Funktion ist relativ umfangreich, da man einiges mit machen kann.
    Ich habe sie aus den Grund erstellt, um user mit den Accounts zu vergleichen.
    Wenn ihr sie anwenden wollt, benötigt ihr ein neuen public im Gamemode
    der nennt sich
    public ts_checkuser(uID[],tsname[])
    So hier werden die uid und der Name übergeben.
    Da ich etwa auf Ordnung im TS stehe, habe ich das mal so gemacht (soll als muster da sein!)
    public ts_checkuser(uID[],tsname[])
    {
    new query[128],LoadName[MAX_PLAYER_NAME];
    format(query, 128, "SELECT `Name` FROM `DTuser` WHERE `TSIdent` = '%s' LIMIT 1;", uID);
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    if(mysql_num_rows(SQL))
    {
    mysql_fetch_row_data(SQL);
    mysql_fetch_field("Name",LoadName,SQL);
    if(strcmp(tsname,LoadName,true))
    {
    format(query, 128, "Bitte ändere deinen Namen zu %s!",LoadName);
    ts_kick(-1, uID, query);
    }
    }
    else
    {
    ts_move(-1, uID, "Unregistriert");
    }
    mysql_free_result(SQL);
    return 1;
    }
    So wie ihr seht hab ich hier eine Abfrage reingemacht.
    Ich frage erst ab ob es die uID in der Datenbank gibt.
    Gibt es sie nicht wird der user gemovt in den channel "Unregistriert"
    Gibt es die uID aber der Name stimmt nicht, wird der User gekickt und bekommt mitgesendet wie er sich nennen soll.
    Ist alles richtig passiert nichts ;)


    Das ist nur eine kleine spielerei die mir heut nacht eingefallen ist :D




    Viel spaß mit den system


    Hinweis! Alle Versionen unter der Beta IV sind nicht mehr Kompatibel


    //edit
    Support eingestellt da 2.0 in folge ist

    kann man das nicht rigendwie direkt machen bzw prüfen in der Funktion direkt?


    Das ist sie z.B.
    stock ts_addchannelgroup(ts_name[], const channel[], const channelgroup[])
    {
    /*
    ts_name = Der Name des User´s im TS
    channel = Der Name des Channels
    channelgroup = Der Gruppenname (z.B. Voice für Voice rechte)
    */
    if(!TS_Data[TsVerbunden])
    {
    if(TS_Data[TsLog])
    {
    print("Es wurden keine Zugangsdaten eingegeben!");
    }
    return 1;
    }
    /* Ab hier nichts ändern! */
    new ts_string[256];
    format(ts_string,sizeof(ts_string),""PHP_HOST_URL"?IP=%s&Queryport=%d&user=%s&key=%s&Port=%d&what=addChanelGroup&channel=%s&channel_group=%s&name=%s",TS_Data[TsIP],TS_Data[TsQuery],TS_Data[TsUser],TS_Data[TsPass],TS_Data[TsPort],channel,channelgroup,ts_name);
    HTTP(0, HTTP_GET, ts_string, "", "TS_Funk");
    return 1;
    }
    das cannel_group ist es ja

    Ich habe ein problem wenn ich z.B. das mache:


    ?gruppe=Server Admin
    Dann sendet er mir nur Server das Admin bleibt da aus :/

    Naja ich habe einen gefunden der kennt die Api :D


    Das system kann schon verwendet werden jedoch brauch die include noch etwas Zeit ;)


    //edit


    Hier nochmal ein Überblick zu den Funktionen die schon funktionieren ;)
    native ts_connect(tsip[],tsuser[],tspass[],tsport=9987,tsqueryport=10011,bool:Log=false);
    native ts_kick(ts_name[],const reason[]);
    native ts_ban(ts_name[], const reason[], time=0);
    native ts_move(ts_name[], const ts_channel[], ts_channelkey[]=" ");
    native ts_createchannel(const cannelname[], const channeltopic[]);
    native ts_createsupchannel(const cannelname[], const channeltopic[], const whatchannel[]);
    native ts_removechannel(const channelname[]);
    native ts_addservergroup(ts_name[], const servergroup[]);
    native ts_removeservergroup(ts_name[], const servergroup[]);
    native ts_addchannelgroup(ts_name[], const channel[], const channelgroup[]);
    native ts_removechannelgroup(ts_name[], const channel[]);


    Da specht schneller war als ich :D

    Das kommt auch noch rein
    Ich mach mal mit hilfe von xGreekz7x: Funktionen rein wo ich selber nicht zurechtkomme ;)
    Daher wird das werk auch von ihn mit veröffentlicht.


    Das mit den rechten etc wird zurzeit gemacht


    //nachtrag


    Bisher haben wir das fertig:


    - Server Gruppen setzen / entfernen
    - Channel Gruppen setzen/entfernen
    - Cannel erstellen / löschen
    - Sub channel erstellen


    Ich denke mit glück kommt heute die Beta sogar raus wenn nicht morgen ;)


    und ein riesen dank an xGreekz7x: für die hilfe

    Mit der eindeutigen ID kommt später dazu
    Zu anfang mach ich das erstmal per Name
    Das mit den Rechten geben/entfernen mach ich zurzeit gerade, und danach kommt ein system mit dazu womit man channel erstellen kann oder auch löschen etc

    Guten zusammen


    Da ich etwas langeweile habe, und einige doch den wunsch haben Samp mit einen Teamspeak zu verbinden, habe ich mich mal mit der api auseinander gesetzt.
    Nun ist die Frage was wünscht ihr euch in den System?
    Bisher habe ich diese Funktionen fertig:


    native ts_connect(tsip[],tsport=9987,tsqueryport=10011,tsuser[],tspass[],bool:Log=false);
    native ts_kick(ts_name[],const reason[]);
    native ts_ban(ts_name[], time=0, const reason[]);
    native ts_move(ts_name[], const ts_channel[], ts_channelkey[]=" ");


    Das ganze system funktioniert per php und ihr braucht nur die include später einbinden.
    Daher wird die installation einfach werden sodass jeder damit zurecht kommt.


    Ich bin mal gespannt was ihr für wünsche habt


    (Dieses Thema hat Leijat genehmigt)

    Naja das klappt auch nicht
    das kommt bei raus:


    Fatal error: Uncaught exception
    'TeamSpeak3_Adapter_ServerQuery_Exception' with message 'insufficient
    client permissions (failed on b_client_ignore_bans)' in
    C:\xampp\htdocs\libraries\TeamSpeak3\Adapter\ServerQuery\Reply.php:314
    Stack trace:
    #0
    C:\xampp\htdocs\libraries\TeamSpeak3\Adapter\ServerQuery\Reply.php(91):
    TeamSpeak3_Adapter_ServerQuery_Reply->fetchError(Object(TeamSpeak3_Helper_String))
    #1
    C:\xampp\htdocs\libraries\TeamSpeak3\Adapter\ServerQuery.php(141):
    TeamSpeak3_Adapter_ServerQuery_Reply->__construct(Array, 'banclient
    clid=...', Object(TeamSpeak3_Node_Host), true)
    #2 C:\xampp\htdocs\libraries\TeamSpeak3\Node\Abstract.php(73):
    TeamSpeak3_Adapter_ServerQuery->request('banclient clid=...', true)
    #3 C:\xampp\htdocs\libraries\TeamSpeak3\Node\Server.php(90):
    TeamSpeak3_Node_Abstract->request('banclient clid=...', true)
    #4 C:\xampp\htdocs\libraries\TeamSpeak3\Node\Abstract.php(97):
    TeamSpeak3_Node_Server->request('banclient clid=...')
    #5 C:\xampp\htdocs\libraries\TeamSpeak3\Node\Server.php(898):
    TeamSpeak3_Node_Abs in C:\xampp\htdocs\libraries\TeamSpeak3\Adapter\ServerQuery\Reply.php on line 314
    bei den code
    $ts3_VirtualServer = TeamSpeak3::factory("serverquery://".$ts3user.":".$tspass."@".$tsip.":".$tsquery."/?server_port=".$tsport."");


    $name = $_GET["name"];
    $time = $_GET["time"];
    $reason = $_GET["reason"];


    $clientid = $ts3_VirtualServer->clientGetByName($name);
    $ts3_VirtualServer->clientBan($clientid, $time, $reason);

    Achso geht das :D


    Aber mal was anderes bei den hier
    TeamSpeak3::init();
    $instance = TeamSpeak3::factory("serverquery://".$tsip.":".$tsquery."");
    $instance->login($ts3user, $tspass);
    $virtualserver = $instance->serverGetByPort($tsport);
    $virtualserver->clientGetByName($_GET["name"])->clientBan($_GET["time"], $_GET["reason"]);
    echo 'Ban von '.$_GET["name"].' erfolgreich';
    Wiso passiert da nichts?

    Hallo


    Ich habe ein problem mit der HTTP Funktion
    Ich lasse bei mir per URL das machen:http://localhost/home.php?name=Beavis&reason=Test
    Das was in der php datei steht wird ausgeführt
    Mach ich das aber so:
    HTTP(0, HTTP_POST, "localhost/home.php", "name=Beavis&reason=Testzweck", "KickPlayer");
    forward KickPlayer(index, response_code, data[]);
    public KickPlayer(index, response_code, data[])
    {
    if(response_code != 200)
    return print("Fehler!!");
    print("Erfolgreich");
    return 1;
    }
    Funktioniert es nicht.
    Er gibt mir zwar aus das es erfolgreich sein sollte aber mehr passiert auch nicht
    Wo mach ich da ein Fehler?