Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Banner PHP, odczytywanie danych z TS3


Rekomendowane odpowiedzi

Opublikowano

Witam, mam banner na TS3 w PHP i chciałbym tam dodać takie informacje jak np ilość odwiedzin użytkownika czyli ile raz już był na ts, ilość kanałów prywatnych itp ale jestem w tym zielony. Pomoże ktoś?

Opublikowano

Witam, mam banner na TS3 w PHP i chciałbym tam dodać takie informacje jak np ilość odwiedzin użytkownika czyli ile raz już był na ts, ilość kanałów prywatnych itp ale jestem w tym zielony. Pomoże ktoś?

Do ilośći kanałów użyj serverInfo i tam masz virtualserver_channelsonline.

Jeśli będziesz również robił kanały prywatne, to poprostu użyj channelList i tam daj licznik wszystkich kanałów i kanalów prywatnych.

Do ilośći odwiedzin użytkownika użyj clientInfo użytkownika i tam masz client_totalconnections.

Opublikowano

Zrobiłem coś takiego ale nie działa :/

Dodam że niektóre inne funkcjie działają np: client_database_id ale większość nie.

$cache['clients'] = $ts->getElement('data', $ts->clientList());


foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$userinfo = $client['client_totalconnections'];
}
}
Opublikowano

 

Zrobiłem coś takiego ale nie działa :/

Dodam że niektóre inne funkcjie działają np: client_database_id ale większość nie.

$cache['clients'] = $ts->getElement('data', $ts->clientList());


foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$userinfo = $client['client_totalconnections'];
}
}

No własnie :D 

Zrób tak:

$cache['clients'] = $ts->getElement('data', $ts->clientList());

foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$clientInfo = $ts->getElement('data', $ts->clientInfo($client['clid']));
$connections = $clientInfo['client_totalconnections'];
}
}
Opublikowano

 

 

Zrobiłem coś takiego ale nie działa :/

Dodam że niektóre inne funkcjie działają np: client_database_id ale większość nie.

$cache['clients'] = $ts->getElement('data', $ts->clientList());


foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$userinfo = $client['client_totalconnections'];
}
}

No własnie :D 

Zrób tak:

$cache['clients'] = $ts->getElement('data', $ts->clientList());

foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$clientInfo = $ts->getElement('data', $ts->clientInfo($client['clid']));
$connections = $clientInfo['client_totalconnections'];
}
}

Po co ma używać clientInfo?

$cache['clients'] = $ts->getElement('data', $ts->clientList('-ip'));
$userinfo = null;

foreach($cache['clients'] as $client) {
	if($client['connection_client_ip'] == $ip){
		$userinfo = $client['client_totalconnections'];
	}
}
Opublikowano

 

 

Zrobiłem coś takiego ale nie działa :/

Dodam że niektóre inne funkcjie działają np: client_database_id ale większość nie.

$cache['clients'] = $ts->getElement('data', $ts->clientList());


foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$userinfo = $client['client_totalconnections'];
}
}

No własnie :D 

Zrób tak:

$cache['clients'] = $ts->getElement('data', $ts->clientList());

foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$clientInfo = $ts->getElement('data', $ts->clientInfo($client['clid']));
$connections = $clientInfo['client_totalconnections'];
}
}

Czyli uważasz, że adres ip mu zwróci domyślnie?

Jesteś w błędzie, pamiętaj aby domyślnie zmienna $connections była na 0.

$cache['clients'] = $ts->getElement('data', $ts->clientList('-ip'));
$connections = 0;

foreach($cache['clients'] as $client) {
	if($client['connection_client_ip'] == $ip){
		$clientInfo = $ts->getElement('data', $ts->clientInfo($client['clid']));
		$connections = $clientInfo['client_totalconnections'];
	}
}

Opublikowano

Dobra Panowie działa mi ten tylko skrypt, reszta nic :D Dzięki za pomoc <3 sam bym nie ogarnął jak użyć tego clientinfo :/ Jeszcze mam pytanie.. Da się zrobić żeby wyświetlało tylko kanały prywatne? tz mam strefę prywatnych kanałów i żeby czytało stamtąd :D

$cache['clients'] = $ts->getElement('data', $ts->clientList());

foreach($cache['clients'] as $client) {
if($client[connection_client_ip] == $ip){
$clientInfo = $ts->getElement('data', $ts->clientInfo($client['clid']));
$connections = $clientInfo['client_totalconnections'];
}
}
Specjalista
Opublikowano

Możesz wpisać w Topicu kanału jakąś frazę np. "Kanał prywatny" a potem listujesz wszystkie kanały i sprawdzasz, który ma taki topic i stosujesz sobie inkrementacje licznika kanałów prywatnych.

Specjalista
Opublikowano

No to też się tak da. Wtedy listujesz kanały i sprawdzasz, czy 'pid' danego kanału zgadzas się ze ID kanał, jesli tak to inkrementujesz licznik kanałów prywatnych.

Opublikowano

wielkie dzięki mordo! ogarnięte <3

 

mam jeszcze jeden problem, chciałem zrobić listę adminów online ale czyta mi tylko jedną rangę administracyjną a drugiej już nie jedna ranga ma id 6 a druga 283 czyżby liczba 283 była za duża?

Opublikowano

wielkie dzięki mordo! ogarnięte <3

 

mam jeszcze jeden problem, chciałem zrobić listę adminów online ale czyta mi tylko jedną rangę administracyjną a drugiej już nie jedna ranga ma id 6 a druga 283 czyżby liczba 283 była za duża?

Musisz zrobic array grup administracyjnych i foreach'owac każdą grupe i tam brać użytkowników z tej grupy, i porównywać z listą użytkowników na serwerze.

 

 

4084514850009411304323.png

Opublikowano

@1361622928-U485574.pngFreszowaty1337

Najpierw pobierz sobie listę osób z serwera:

$users = $query->getElement('data',$query->clientList('-groups -voice -away -times -uid'));

Potem zrób foreacha, w którym pobierzesz każdą grupę administracyjną z configu:

foreach($config['functions']['adminsOnline']['adminsGroups'] as $sgid)

Teraz pobierz listę osób z danej grupy:

$user = $query->getElement('data', $query->serverGroupClientList($sgid, $names = true));

Kolejny foreach:

foreach($user as $client)

Sprawdź czy ktokolwiek jest w tej grupie:

if(array_key_exists('client_nickname', $client))

Jeżeli tak to dodaj sobie do tablicy jego nick:

array_push($adminsNicks, $client['client_nickname']);

I potem po prostu na kanale wypisz nicki z tej tablicy :)


Pozdrawiam, ArrMeeR

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...