Skocz do zawartości
KaLu

Licznik Graczy Online

Polecane posty

Witam, to co w temacie.

Jak zrobić aktualną liczbę graczy na Serwerze SA:MP, IP i Host wpiszę sobie sam oraz ustawię CSS do tego.

Proszę o wytlumacznie lub Link do poradnika.

Wersja IPB 3.1.4

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Na h-rp, grp, perfect, itd, pobierane z bazy zostają nicki, zlicza się rekordy i umieszcza. Czyli musisz takiego hooka zrobić. Jeśli nie masz gamemode0 opartego na bazie, to możesz zliczać przez prosty skrypt php.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przepraszam za odkop - jaki skrypt?

Mógłbyś dać do serwera na Plikach nie MySQL?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Przepraszam za odkop ale też interesuje mnie ten temat. Może ktoś wytłumaczyć jak to zrobić? za pomocą php, najlepiej krok po kroku.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tak wiem, ale jest też kod php który można wkleić do szablonu i z tego co wiem to działa, tylko nie wiem jak może wyglądać taki kod.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie znam się na serwerach gier. Jeśli będziesz miał kod php to mogę Ci pomóc w ogarnięciu tego w IP.Board, ale tak to nie bardzo wiem jak ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Kod do MyBB wygląda tak


<li>Gracze Online <span style="background-color: #E7A100; color: #FFF; font-size: 11px; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; margin-left: 5px; margin-top: 2px; padding: 2px;"><span style="font-weight: bold; font-size: 12px;"><?php


$ip = '64.120.76.238'; // Tutaj wpisz IP

$port = '6300'; // Tutaj wpisz PORT

$fp = fsockopen('udp://' . $ip, $port, $errno, $errstr,0.0);


if($fp){


	    $packet = 'SAMP';

    $packet .= chr(strtok($ip, '.'));

    $packet .= chr(strtok('.'));

    $packet .= chr(strtok('.'));

    $packet .= chr(strtok('.'));

    $packet .= chr($port & 0xFF);

    $packet .= chr($port >> 8 & 0xFF);

    fwrite($fp, $packet.'i');

    fread($fp, 11);

    $is_passworded = ord(fread($fp, 1));

    $plr_count    = ord(fread($fp, 2));

    $max_plrs	  = ord(fread($fp, 2));

echo "".$plr_count." online";

$cos = " $max_plrs - $plr_count ";

echo "";

    fwrite($fp, $packet.'c');

    fread($fp, 11);

    fclose($fp);

}else{

echo "<b>Offline.</b>";}

?></span><span></span></span></li>

Może to ci coś podpowie jak zrobić do IPB

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W szablonie w miejscu gdzie chcesz, żeby się to wyświetlało wstaw takie coś:


<li>Gracze Online <span style="background-color: #E7A100; color: #FFF; font-size: 11px; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; margin-left: 5px; margin-top: 2px; padding: 2px;"><span style="font-weight: bold; font-size: 12px;">
<php>

$ip = '64.120.76.238'; // Tutaj wpisz IP
$port = '6300'; // Tutaj wpisz PORT
$fp = fsockopen('udp://' . $ip, $port, $errno, $errstr,0.0);

if($fp){

$packet = 'SAMP';
$packet .= chr(strtok($ip, '.'));
$packet .= chr(strtok('.'));
$packet .= chr(strtok('.'));
$packet .= chr(strtok('.'));
$packet .= chr($port & 0xFF);
$packet .= chr($port >> 8 & 0xFF);
fwrite($fp, $packet.'i');
fread($fp, 11);
$is_passworded = ord(fread($fp, 1));
$plr_count = ord(fread($fp, 2));
$max_plrs = ord(fread($fp, 2));
echo "".$plr_count." online";
$cos = " $max_plrs - $plr_count ";
echo "";
fwrite($fp, $packet.'c');
fread($fp, 11);
fclose($fp);
}else{
echo "<b>Offline.</b>";}
</php></span><span></span></span></li>[/code]

I powinno działać ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wyskakują błędy :(


Warning: Cannot modify header information - headers already sent by (output started at /home/designon/public_html/design-online.pl/forum/cache/skin_cache/cacheid_1/skin_global.php:117) in /home/designon/public_html/design-online.pl/forum/admin/sources/classes/output/formats/html/htmlOutput.php on line 141

jakaś sugestia jak go naprawić?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok, to poprawiony kod:


<php>
$status = '';

$ip = '64.120.76.238'; // Tutaj wpisz IP
$port = '6300'; // Tutaj wpisz PORT
$fp = fsockopen('udp://' . $ip, $port, $errno, $errstr,0.0);

if($fp)
{
$packet = 'SAMP';
$packet .= chr(strtok($ip, '.'));
$packet .= chr(strtok('.'));
$packet .= chr(strtok('.'));
$packet .= chr(strtok('.'));
$packet .= chr($port & 0xFF);
$packet .= chr($port >> 8 & 0xFF);
fwrite($fp, $packet.'i');
fread($fp, 11);
$is_passworded = ord(fread($fp, 1));
$plr_count = ord(fread($fp, 2));
$max_plrs = ord(fread($fp, 2));
$status = "".$plr_count." online";
$cos = " $max_plrs - $plr_count ";
fwrite($fp, $packet.'c');
fread($fp, 11);
fclose($fp);
}
else
{
$status = "<b>Offline.</b>";
}
</php>


<li>Gracze Online <span style="background-color: #E7A100; color: #FFF; font-size: 11px; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; margin-left: 5px; margin-top: 2px; padding: 2px;"><span style="font-weight: bold; font-size: 12px;">{$status}</span><span></span></span></li>[/code]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ok ja chcę aby ten licznik był nad najnowszymi zmianami statusów i kiedy wklejam tam kod to wyskakuje błąd

Internal Server Error

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

To zrób z tego hook'a. Błąd może się pojawiać z różnych przyczyn...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Stworzyłem Hook za pomocą twojego poradnika ale nie wyświetla się on na forum.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

to znaczy, że coś źle zrobiłeś ;) czasami trzeba ponownie edytować hook i zapisać go jeszcze raz, bo w cache'u musi się odświeżyć.

Jak to zrobisz i nie będzie działać dalej to sprawdź czy się w ogóle uruchamia hook. w pliku hooka w metodzie getOutput daj takie coś:

var_dump( 'test' );

i wtedy w na samej górze strony powinieneś zobaczyć komunikat: "Warning: Cannot modify header information" a nad nim napis string (4) "test" czy jakoś tak :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nic nie wyskoczyło. A gdybym skorzystał z tego gotowego twojego Hooka, albo jak możesz to zapodaj jakiś który bym sobie edytował.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Stworzyłem nowy HOOK i teraz podczas próby wejścia na stronę wyskakuje błąd.

[b]Fatal error[/b]: Non-abstract method GraczyOnline::getOutput() must contain body in [b]/home/designon/public_html/design-online.pl/forum/hooks/graczeonline.php[/b] on line [b]31

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

błąd mówi że coś skopałeś bo metoda getOutput() musi zawierać coś w sobie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Oto zawartość pliku:


<?php

/**

* Design-Onilne.pl

* (Graczy Online)

*

* @author		 Wojtek Malinowski (Devil)

* @copyright (c) 2005 - 2012 Design-Online.pl

* @package	 Design Online

* @subpackage PHP

* @link		 http://www.design-online.pl

* @link		 http://www.design-online.pl.pl

* @version	 2.0.0

*

*/

class GraczeOnline

{

	 private $registry;	

	 private $DB;

	 private $memberData;

	 private $settings;	


	 public function getOutput()

	 {

			 $this->registry = ipsRegistry::instance();

			 $this->DB		 = $this->registry->DB();

			 $this->memberData =& $this->registry->member()->fetchMemberData();

			 $this->settings =& $this->registry->fetchSettings();

	 }


	 public function getOutput();

	 {

			 /**

				 * Ładujemy zasoby językowe

				 */

			 $this->registry->class_localization->loadLanguageFile( array( 'public_boards' ), 'core' );


		 /**

				 * Zamieniamy BBCody na kod HTML

				 */

			 IPSText::getTextClass( 'bbcode' )->parse_html = 0;

			 IPSText::getTextClass( 'bbcode' )->parse_bbcode = 1;

			 IPSText::getTextClass( 'bbcode' )->parse_smilies = 1;

			 IPSText::getTextClass( 'bbcode' )->parsing_section = 'graczy_online';


			 $this->settings[ 'graczy_online' ] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $this->settings[ 'graczy_online' ] );


			 /**

				 * Wyświetlamy zawartość hooka

				 */

			 return $this->registry->getClass( 'output' )->getTemplate( 'boards' )->graczeonline( $this->settings[ 'graczy_online' ] );

	 }

}

?>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

i to jest błąd:


public function getOutput()
{
$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->settings =& $this->registry->fetchSettings();
}

public function getOutput();
{
[/code] jak już to zamień to na:
[code]
public function __construct()
{
$this->registry = ipsRegistry::instance();
$this->DB = $this->registry->DB();
$this->memberData =& $this->registry->member()->fetchMemberData();
$this->settings =& $this->registry->fetchSettings();
}

public function getOutput()
{

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.