Jump to content
KaLu

Licznik Graczy Online

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Przepraszam za odkop - jaki skrypt?

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

Share this post


Link to post
Share on other sites

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


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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.


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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 ;)

Share this post


Link to post
Share on other sites

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


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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ć ;)

Share this post


Link to post
Share on other sites

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ć?


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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]

Share this post


Link to post
Share on other sites

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

Internal Server Error


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

No tak ale co?


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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' ] );

	 }

}

?>


Jeżeli pomogłem wciśnij

rep_up.png :)

Zanim napiszesz temat, sprawdź czy podobny nie istnieje na forum.

Share this post


Link to post
Share on other sites

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()
{

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.