Szerző Téma: Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody  (Megtekintve 7947 alkalommal)

+4 Show voters

Sziasztok! :)
egy (újabb) frankó kis lehetõséget osztok meg veletek, amit fõleg az RP szerverek jövõjében, nagy elõrelépés  :thumbsup:
Sorok száma: 546 [Kommentárral]
Térjünk is a lényegre..
Ezzel a scripttel, a TS szerverünket összeköthetjük a SA:MP szerverünkkel. Hogy hogyan, az más tészta- most az a fontos, hogy ez miért jó nekünk?!
-Lehetõség nyílik a szerveren lévõ játékosok automatikus mozgatására TS-en
-Nem kell még a tálcára se letennünk a GTA-t, hogy bannoljunk, kickeljünk egy idiótát TS-rõl.
-Számos kényelmi funkció, sok parancs.
A script LELKE: (A \'TSConnector.inc-re kattintva letölthetõ) [eredeti készítõ: maddinat0r] TSConnector.inc és TSConnector.dll (vagy .so)
Errõl röviden: Egy include, mely a DLL-el összekötve végzi a dolgát. Ebben vannak megírva a parancsok, a filterscript gyakorlatilag csak a parancsok felhasználása.
 
 




A TSConncetor.inc-ben lehívott native-k:
 

enum E_KICK_TYPE
{
KICK_TYPE_CHANNEL = 1,
KICK_TYPE_SERVER
};
enum E_CHANNEL_TYPE
{
CHANNEL_TYPE_PERMANENT = 1,
CHANNEL_TYPE_SEMI_PERMANENT,
CHANNEL_TYPE_TEMPORARY
};
native TSC_Connect(ip[], port[]); //Ezzel hozzuk létre a csatlakozást
native TSC_Disconnect(); //Ezzel töröljük a csatlakozást
native TSC_Login(user[], pass[], nickname[]); //Ezzel lépünk be- mint adminisztrátor
native TSC_ChangeNickname(nickname[]); //Ezzel válthatjuk a szerver TS-nevét, amit a loginban megadtunk.
native TSC_CreateChannel(channelname[]); //Szoba készítéséhez
native TSC_DeleteChannel(channelname[]); //Szoba törléséhez
native TSC_SetChannelName(channelname[], newchannelname[]); //Szoba név átíráshoz
native TSC_SetChannelDescription(channelname[], channeldesc[]); //Szoba leírás váltás
native TSC_SetChannelType(channelname[], E_CHANNEL_TYPE:type); //Szoba típus váltás, a fentebbi ENUM-ban megadottakra
native TSC_SetChannelPassword(channelname[], channelpasswd[]); //Szoba jelszó váltás
native TSC_SetChannelTalkPower(channelname[], talkpower); //Szoba \'TalkPower\' váltása
native TSC_SetChannelSubChannel(channelname[], parentchannelname[]); //Szoba mozgatása
native TSC_MoveChannelBelowChannel(channelname[], parentchannelname[]); //Szoba mozgatása
 
native TSC_KickClient(uid[], E_KICK_TYPE:kicktype, reason[]); //Felhasználókidobása, az ENUM-ban megadottak alapján. (szerver, vagy szoba)
native TSC_BanClient(uid[], seconds, reason[]); //Felhasználó Bannolása TS-rõl*
native TSC_MoveClient(uid[], channelname[]); //Felhasználó mozgatása
native TSC_SetClientChannelGroup(uid[], groupid, channelname[]); //Felhasználó szoba csoport váltás
native TSC_AddClientToServerGroup(uid[], groupid); //Felhasználó hozzáadása egy szerver csoporthoz (pl admin adása..)
native TSC_RemoveClientFromServerGroup(uid[], groupid); //Felhasználó törlése egy szerver csoportból
native TSC_PokeClient(uid[], msg[]); //Poke-olás..
 
native TSC_SendClientMessage(uid[], msg[]); //üzenet küldése XYZ-nek
native TSC_SendChannelMessage(channelname[], msg[]); //szobaüzenet küldése
native TSC_SendServerMessage(msg[]); //szerver üzenet küldése
//Forwardok
forward TSC_OnClientConnect(nickname[], uid[]); //Ha egy Felhasználó csatlakozik
forward TSC_OnClientDisconnect(nickname[], uid[]); //Ha egy Felhasználó lecsatlakozik
forward TSC_OnClientChannelMove(nickname[], uid[], channelname[]); //Ha a Felhasználó szobát vált
forward TSC_OnClientChannelText(nickname[], uid[], channelname[], msg[]); //Ha a valaki ír valamit a szobába
forward TSC_OnClientServerText(nickname[], uid[], msg[]); //Ha valaki szerver üzenetet küld

 


//!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fontos tudni: !!!!!!!!!!!!!!!!!!!!!!!!!!!!
//A TS-rõl való bannolást, ki lehet kijátszani a TS ID megváltoztatásával.

 

Errõl röviden ennyit.. Jöhet maga a script.
 
Amit használtam:
 

//SSCANF darabolásra
//TSConnector include, ami nélkül ez létre sem jött volna
//ZCMD a könyebb SSCANF-hoz (és gyorsabb parancskezeléshez)
//y_ini a fájlban lévõ tároláshoz
//A scripten belüli lekéréshez pedig PString-eket csináltam, de így utólag
//belegondolva lehet jobb lett volna ha azt is Y_INI-vel csinálom.
//             vagy mégsem...

 
Magam fejlesztettem, a felhasználása engedélyezett, ha a nevem nem tünteted el.


Egy kis infó:
Mi is az a TS USER ID?!
 

//Az egy generált, 27 szám/betû és egy =-jelbõl álló azonosítókulcs, amit a TeamSpeak-ünk ad.

 
Mire jó?
 

//A szerveren való azonosításhoz :) ez alapján mozgat/rúg ki/bannol a script.

 



Csatlakozáskor a következõ történik:

 

//A szerver elõkészíti a játékos INI-jét
//kiolvassa a TSUserID-t.
//
//Ha ez megvan, ellenõrizzük hogy a TSUserID kevesebb mint 27 vagy több mint 29 karakter
//ha az egyik igaz, (vagy nem is létezik, vagy hibás a TSID)
//
//Feldobjuk azt a dialogot, ahol megadhatja a (valódi) TSUSER ID-t.

 


Pawn-nyelven:

 

public OnPlayerConnect(playerid)
{
//Valami módon csatlakozáskor, definiálnunk kell a TSUSER-id változót.
//Ha ezt nem tesszük meg, akkor gyakorlatilag használhatatlan a scriptünk ^^
//Ezt akár megírhatjuk egy MySQL -es táblára, lekéréssel is, melynek lényege:
   //A script lekéri az X tábla Y sorából a \"TSUserID\" változót.
   //Tipp: Ezt összeköthetjük a weblapunkkal, hogy a játékosok
    // pl.: játékon kívül megadják a TSUserID-jüket, és azt használja majd a szerver azonosításra.
//Én, egy szipla játékon belüli kérést (input boxot) írok most meg, aminek
//eredményét mentjük egy INI-fájlban.
    INI_ParseFile( user_ini_file( playerid ), \"load_user_%s\", .bExtra = true, .extra = playerid ); //INI Elõkészítése
new vanvagynincs[28]; //változó
SetPVarString(playerid, \"TSUserID\", TSUserID[ playerid ]); //PVar beállítása az INI-ben megadottakhoz
GetPVarString(playerid, \"TSUserID\", vanvagynincs, 28); //Majd ennek lekérése
    if(strlen(vanvagynincs) >= 27 && strlen(vanvagynincs) <= 29) //TSUserID ellenõrzése
{ //Ha nem megfelelõ
ShowPlayerDialog(playerid, DIALOG_TSID, DIALOG_STYLE_INPUT, \"TS USER ID\", \"Kérlek add meg, mi a TS3-user ID-d:\", \"Mentés\", \"Mégsem\");
SendClientMessage(playerid, 0xFFFFFFF,\"Ha nem tudod mi az, nézz utána a szerver honlapján, vagy használd a \'/tsidhelp\' parancsot!\");
}
return 1;
}

 
Lecsatlakozáskor pedig mentjük a TSUserID-t, INI-be:
 

public OnPlayerDisconnect(playerid, reason)
{
    new INI:File = INI_Open( user_ini_file( playerid ) );
new pvarid[28];
GetPVarString(playerid, \"TSUserID\", pvarid, 28);
    INI_SetTag( File, \"TeamSpeak Connector BY: Bloody44 ||ReMoTe\" );
    INI_WriteString( File, \"TSUserID\", pvarid);
    INI_Close( File );
return 1;
}

 


Most pedig térjünk el az \"UserID\"-rõl, akármilyen fontos is az..

 



A \'PUBLIC\'-részek.
Hogy mi-mit csinál, megtaláljátok fentebb, viszont ha tudsz angolul, nem nehéz megérteni sem  ;D



//-----------------------    PUBLIC --------------------------
public TSC_OnClientConnect(nickname[], uid[])
{
new string[512];
new string2[512];
    format(string,sizeof(string),\"TSConnector: %s csatlakozott a TS-szerverünkre! Gyere te is! :)\", nickname);
    format(string2,sizeof(string2),\"TSConnector: %s lecsatlakozott. TSUserID: %s\", nickname, uid);
SendClientMessageToAll(-1, string);
print(string2);
}
public TSC_OnClientDisconnect(nickname[], uid[])
{
new string[512];
new string2[512];
    format(string,sizeof(string),\"TSConnector: %s lecsatlakozott a TS-szerverünkrõl.\", nickname);
    format(string2,sizeof(string2),\"TSConnector: %s lecsatlakozott. TSUserID: %s\", nickname, uid);
SendClientMessageToAll(-1, string);
print(string2);
}
public TSC_OnClientChannelMove(nickname[], uid[], channelname[])
{
new string[512];
    format(string,sizeof(string),\"TSConnector: %s(UserID: %s) átment ebbe a szobába: %s\", nickname, uid, channelname);
SendToAdmins(0xFFFFFFF, string);
return 1;
}
public TSC_OnClientChannelText(nickname[], uid[], channelname[], msg[])
{
new string[512];
    format(string,sizeof(string),\"TSConnector: %s(UserID: %s) ezt írta TS-en: %s szoba: %s\", nickname, uid, msg, channelname);
SendToAdmins(0xFFFFFFF, string);
return 1;
}
public TSC_OnClientServerText(nickname[], uid[], msg[])
{
new string[512];
    format(string,sizeof(string),\"Szerver üzenet TS-en: (%s:) %s\", nickname, msg);
SendClientMessageToAll(-1, string);
}

 




Jöhet néhány parancs. Gyakorlatilag az majdnem az összes \"native\" által meghívott lehetõséget felhasználtam, de nem mindet fogom ide kiemelni.
 


CMD:tsservermsg(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, 0xFFFFFFF,\"HIBA: Ezt a parancsot te nem használhatod!\");
}
else
{
new uzenet[128]; //Változó a 1. értéknek
//Ha nem így írta a parancsot
    if(sscanf(params,\"s\", uzenet)) return SendClientMessage(playerid, 0xFFFFFFF,\"Így próbáld: /tsservermsg [üzenet]\");
    TSC_SendServerMessage(uzenet);
}
return 1;
}

 
TS Szerver üzenet küldése!





CMD:tschannelmsg(playerid, params[])
{
    if(!IsPlayerAdmin(playerid))
{
return SendClientMessage(playerid, 0xFFFFFFF,\"HIBA: Ezt a parancsot te nem használhatod!\");
}
else
{
new chname[256]; //Változó az 1. értéknek
new uzenet[256]; //Változó a 2. értéknek
//Ha nem így írta a parancsot
    if(sscanf(params,\"ss\", chname, uzenet)) return SendClientMessage(playerid, 0xFFFFFFF,\"Így próbáld: /tschannelmsg [szoba] [üzenet]\");
    TSC_SendChannelMessage(chname, uzenet);
}
return 1;
}

 
Szoba üzenet küldés





CMD:bants(playerid, params[])
{
//Parancs darabolása SSCANF-al
    new gamerid; //Változó az 1. értéknek
new ok[129]; //Változó a 2. értéknek
new ido; //Változó a 3. értéknek
//Ha nem így írta a parancsot
    if(sscanf(params,\"uis\", gamerid, ido, ok)) return SendClientMessage(playerid, 0xFFFFFFF,\"Így próbáld: /bants [játékos ID] [idõ(másodperc)] [ok]\");
//Ha nem admin
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFFFFFFF,\"HIBA: Ezt a parancsot te nem használhatod!\");
//Az \"userrid\"-nek a játékoshoz kötött TSID-jének lekérdezése..
    new tsid[28];
    GetPVarString(gamerid, \"TeamSpeakID\", tsid, 28);
//\"tsid\" bannolása a szerverrõl, \"ok\"-miatt..
TSC_BanClient(tsid, ido, ok);
return 1;
}

 
Kliens bannolása..






Írtam egy példát arra, hogy miként is kell megoldani azt, ha a játékos X pontban van, Y szobába dobjon.


 

public OnPlayerUpdate(playerid)
{
  //ha a játékos az adott pontban van, akkor TS-en egy bizonyos
    //szobába rakja át [AUTOMATIKUSAN]
    if(IsPlayerInRangeOfPoint(playerid, 7.0, 2695.6880, -1704.6300, 11.8438)) //Ha a pontban van
    {
    new tsid[28]; //TeamSpeakID változó lekérése.
    GetPVarString(playerid, \"TeamSpeakID\", tsid, 28);
   //Berakjuk a \'SZOBANÉV\' szobába :D
        TSC_MoveClient(tsid, \"Szobanév\");
    }
}

 





Végül pedig kiemelem a dialog kezelését is:



 

//DIALOG KEZELÉS!!!
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_TSID) //Dialog..
    {
        if(!response) // Ha MÉGSEM-re megy, kidobás
        {
    new name[MAX_PLAYER_NAME+1], string[256+MAX_PLAYER_NAME+1]; //Változó
    GetPlayerName(playerid, name, sizeof(name)); //Név lekérése a forrmázáshoz
    format(string, sizeof(string), \"TSConncetor: %s ki lett rúgva, mert nem adta meg a TS ID-jét..\", name); //Formázás
            SendToAdmins(-1,string); //Üzenet küldése az adminoknak
            KickWithMessage(playerid, -1, \"Sajnálom, de ahhoz hogy a szerveren játszhass, rendelkezned kell TS ID-vel.. Ha nem tudod mi az, olvasgass kicsit a szerver honlapján.\"); //Játékos kidobása üzenettel
        }
        else // Ha MENTÉS-re megy, megézzük hogy 24 karakter-e a bevitt érték (mint csatlakozáskor)
        {
            if(strlen(inputtext) >= 27 && strlen(inputtext) <= 29)
            { //Ha nem 28 (több vagy kevesebb), hibaüzenet és dialog újramutatása
            SendClientMessage(playerid, -1, \"HIBA: A megadott Team Speak User ID hibásnak tûnik. Kérlek ellenõrizd!\");
   ShowPlayerDialog(playerid, DIALOG_TSID, DIALOG_STYLE_INPUT, \"TS USER ID\", \"Kérlek add meg, mi a TS3-user ID-d:\", \"Mentés\", \"Mégsem\");
            } //Ha 28 (helyes), akkor mentés \"TeamSpeakID\"-PString be.
            else {SetPVarString(playerid, \"TeamSpeakID\", inputtext);}
        }
        return 1;
    }
    return 0;
}

 





Igazából ennyi lenne a rövid bemutató, kommentárokat/leírást a PAWN CODE-on belül találtok.
Ha valami mégsem érthetõ, akkor írj és segítek :)
Remélem sokan veszitek hasznát.
Letöltés:
PASTEBIN
 

Credits:
Plugin/Include készítõ: maddinat0r
Script készítõ: Bloody44
 
 
Megköszönni ÉR!  :angel:
« Utoljára szerkesztve: 2014. május 24. - 17:24:44 írta Bloody44 »

Nem elérhető Peterta12

  • 183
  • Peterta12
    • Profil megtekintése
Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #1 Dátum: 2014. május 19. - 19:11:58 »
0 Show voters
Tök jó!Ilyen se jutott volna az eszembe ha keresnék :D  :thumbsup: Megy  a plusz!

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #2 Dátum: 2014. május 19. - 20:00:52 »
0 Show voters
Örülök, hogy tetszik  ;D köszi

Nem elérhető Lofoli

  • 296
    • Profil megtekintése
Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #3 Dátum: 2014. május 19. - 20:25:36 »
0 Show voters
Ez jó nekem tetszik csak így tovább!
Gratt hozzá .

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #4 Dátum: 2014. május 19. - 20:42:23 »
+2 Show voters
Érdemes lenne odírni az eredeti készítõt, a többi csak díszítés, illetve miért lenne az RP szerverek jövõje? Beszélni nem lehet vele..
http://forum.sa-mp.com/showthread.php?t=437671

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #5 Dátum: 2014. május 20. - 06:44:16 »
0 Show voters
Mivel nem lehet beszélni?! komplett IC ts szervert ki lehet építeni vele..
a fórum téma pedig ott van.. csak rá kellene kattintani ._.

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #6 Dátum: 2014. május 20. - 18:00:57 »
0 Show voters
Nem azt mondtam hogy nem lehet elerni, hanem hogy rakd ki a keszito nevet. Ennyi erovel eddig is lehetett volna ilyen szervert csinalni Ts-en keresztul, a sampos kezelofelulet kb. Semmit nem valtoztat szerintem es sok hasznat sem latom. Illetve ha nincs Tsed akkor is szopacs az egesz.. Az lenne jo ha Ts nelkul lehetne hasznaln, mindenfele audio connectorral a tsen keresztul, de ezt ugye nem lehet, igy kb semmi ertelme.

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #7 Dátum: 2014. május 20. - 18:34:24 »
0 Show voters
Szerintem nem egyedül vagyok, aki nem ért ezzel egyet :)
ha neked nem tetszik, hát nem használod...  :angel:

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #8 Dátum: 2014. május 20. - 20:20:29 »
0 Show voters
Idézetet írta: Bloody44 date=1400603664\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"48291\" data-ipsquote-contentclass=\"forums_Topic
Szerintem nem egyedül vagyok, aki nem ért ezzel egyet :)
ha neked nem tetszik, hát nem használod...  :angel:
 
Sramm, csak ara akart utalni, hogy ezt egyáltalán nem te készítetted hannem úgy tüntetted fel, hogy mintha te készítetted volna. Csak simán ara kért, hogy az EREDETI készítõ nevét rakd ki, és ne a te neved legyen ott, hogy: \"by: Bloody\"

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #9 Dátum: 2014. május 20. - 21:16:07 »
+1 Show voters
Te most csináltál egy szkriptet, ami egy inc funkcióit mutatja be?

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #10 Dátum: 2014. május 20. - 21:31:33 »
0 Show voters
Azért szépen lefordítodtad, és fáradtságod jegyében kapsz egy pluszt nehogy elaludj! És köszi, hogy átthoztad a hiv. fórumról!

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #11 Dátum: 2014. május 21. - 12:18:54 »
0 Show voters
készítettem egy scriptet, ami egy plugin használatát mutatja be ;)

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #12 Dátum: 2014. május 21. - 14:13:08 »
0 Show voters
Érdemes lenne odaírni az eredeti készítõt\' date=\'..[/quote\']
Te még mindig azzal vagy elfoglalva hogy összehoztál egy pluginhoz, egy szkriptet, ami alap járatban az eredeti készítõ témájához ki van írva, mit hogy kell. Jó lenne tényleg végre ki írni, az eredeti készítõ nevét. (maddinat0r)
Eredeti téma: Itt
[/quote]

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #13 Dátum: 2014. május 22. - 19:06:26 »
0 Show voters
odaírtam  :angel:

Team Speak 3 Connector (TS összekötése a szerverünkkel) by: Bloody
« Válasz #14 Dátum: 2014. május 22. - 19:24:32 »
0 Show voters
Most komolyan viccelni akarsz? Írd már oda a plugin készítõjét...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal