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
  • 0

Dodanie statusu serwera Minecraft na stronę


eqx

Pytanie

Odkrywca
Opublikowano

Witam serdecznie jako iź jestem kompletnie zielony w tworzeniu stron to chcialbym prosić o pomoc. Mianowicie tworzę stronę (przerabiam szablon) i chciałbym dodać status serwera obok ip serwera.

Chciałbym aby po "Status" był wyświetlony status serwera online/offline

Chciałbym aby ten skrypt nie był w głównym kodzie strony tylko ew w jakimś folderze. :)

Dziękuję za wszelką pomoc!

Pozdrawiam!!!  

Tu mam kod skrytu odpowiadającego za ip serwera:

 

<?php
/*
?============?
 KONFIGURACJA
?============?
By Goukan/exevan
Aby dzialalo polaczenie z serwerem nalezy dodac do server.properties takie linijki:
enable-query=true
query.port=25565
*/
define( 'MQ_SERVER_ADDR', '' ); //ip serwera
define( 'MQ_SERVER_PORT',  ); //port query
define( 'MQ_TIMEOUT', 1 );

// Display everything in browser, because some people can't look in logs for errors
Error_Reporting(0);
Ini_Set( 'display_errors', true );

$Timer = MicroTime( true );
$Query = new MinecraftQuery( );
	
try
{
	$Query->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT );
}
catch( MinecraftQueryException $e )
{
	$Error = $e->getMessage( );
}
?>
<?php
class MinecraftQueryException extends Exception
{
}
class MinecraftQuery
{
	/*
	 * Class written by xPaw
	 */
	
	const STATISTIC = 0x00;
	const HANDSHAKE = 0x09;
	private $Socket;
	private $Players;
	private $Info;
	public function Connect( $Ip, $Port= 25565, $Timeout = 3 )
	{
		if( !is_int( $Timeout ) || $Timeout < 0 )
		{
			throw new InvalidArgumentException( 'Timeout must be an integer.' );
		}
		$this->Socket = @FSockOpen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, $Timeout );
		if( $ErrNo || $this->Socket === false )
		{
			throw new MinecraftQueryException( 'Could not create socket: ' . $ErrStr );
		}
		Stream_Set_Timeout( $this->Socket, $Timeout );
		Stream_Set_Blocking( $this->Socket, true );
		try
		{
			$Challenge = $this->GetChallenge( );	
			$this->GetStatus( $Challenge );
		}
		catch( MinecraftQueryException $e )
		{
			FClose( $this->Socket );	
			throw new MinecraftQueryException( $e->getMessage( ) );
		}
		FClose( $this->Socket );
	}
	public function GetInfo( )
	{
		return isset( $this->Info ) ? $this->Info : false;
	}
	public function GetPlayers( )
	{
		return isset( $this->Players ) ? $this->Players : false;
	}
	private function GetChallenge( )
	{
		$Data = $this->WriteData( self :: HANDSHAKE );
		if( $Data === false )
		{
			throw new MinecraftQueryException( "Failed to receive challenge." );
		}
		return Pack( 'N', $Data );
	}
	private function GetStatus( $Challenge )
	{
		$Data = $this->WriteData( self :: STATISTIC, $Challenge . Pack( 'c*', 0x00, 0x00, 0x00, 0x00 ) );
		if( !$Data )
		{
			throw new MinecraftQueryException( "Failed to receive status." );
		}
		$Last = "";
		$Info = Array( );
		$Data    = SubStr( $Data, 11 );
		$Data    = Explode( "\x00\x00\x01player_\x00\x00", $Data );
		$Players = SubStr( $Data[ 1 ], 0, -2 );
		$Data    = Explode( "\x00", $Data[ 0 ] );
		$Keys = Array(
			'hostname'   => 'HostName',
			'gametype'   => 'GameType',
			'version'    => 'Version',
			'plugins'    => 'Plugins',
			'map'        => 'Map',
			'numplayers' => 'Players',
			'maxplayers' => 'MaxPlayers',
			'hostport'   => 'HostPort',
			'hostip'     => 'HostIp'
		);
		foreach( $Data as $Key => $Value )
		{
			if( ~$Key & 1 )
			{
				if( !Array_Key_Exists( $Value, $Keys ) )
				{
					$Last = false;
					continue;
				}	
				$Last = $Keys[ $Value ];
				$Info[ $Last ] = "";
			}
			else if( $Last != false )
			{
				$Info[ $Last ] = $Value;
			}
		}
		$Info[ 'Players' ]    = IntVal( $Info[ 'Players' ] );
		$Info[ 'MaxPlayers' ] = IntVal( $Info[ 'MaxPlayers' ] );
		$Info[ 'HostPort' ]   = IntVal( $Info[ 'HostPort' ] );
		if( $Info[ 'Plugins' ] )
		{
			$Data = Explode( ": ", $Info[ 'Plugins' ], 2 );
			$Info[ 'RawPlugins' ] = $Info[ 'Plugins' ];
			$Info[ 'Software' ]   = $Data[ 0 ];
			if( Count( $Data ) == 2 )
			{
				$Info[ 'Plugins' ] = Explode( "; ", $Data[ 1 ] );
			}
		}
		else
		{
			$Info[ 'Software' ] = 'Vanilla';
		}
		$this->Info = $Info;
		
		if( $Players )
		{
			$this->Players = Explode( "\x00", $Players );
		}
	}
	private function WriteData( $Command, $Append = "" )
	{
		$Command = Pack( 'c*', 0xFE, 0xFD, $Command, 0x01, 0x02, 0x03, 0x04 ) . $Append;
		$Length  = StrLen( $Command );
		
		if( $Length !== FWrite( $this->Socket, $Command, $Length ) )
		{
			throw new MinecraftQueryException( "Failed to write on socket." );
		}
		$Data = FRead( $this->Socket, 2048 );
		if( $Data === false )
		{
			throw new MinecraftQueryException( "Failed to read from socket." );
		}
		if( StrLen( $Data ) < 5 || $Data[ 0 ] != $Command[ 2 ] )
		{
			return false;
		}
		return SubStr( $Data, 5 );
	}
}
	if( ( $Info = $Query->GetInfo( ) ) !== false )
	{
		foreach( $Info as $InfoKey => $InfoValue )
		{
			if( Is_Array( $InfoValue ) )
			{
				echo'';
			}
			else
			{	
				echo'';
			}
		}
	}

if(isset($Error))
{
	echo'Status: <font color="red">Offline</font><br>';
}
else
{
	echo'Status: <font color="green">Online</font><br>';
}
?> 

 

I chciałbym dodać to na mojej stronie:

 

<!DOCTYPE html>

<head>
    <title>fgggg</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="opis">
    <meta charset="UTF-8">

    <link href='http://fonts.googleapis.com/css?family=Dosis:300,400,500,600,700,800' rel='stylesheet' type='text/css'>
        
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet" media="screen">
    <link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
    <link rel="stylesheet" href="css/misc.css">
    <link rel="stylesheet" href="css/animate.css">
    <link href="css/style.css" rel="stylesheet" media="screen">

	
        

    <link rel="shortcut icon" href="images/ico/favicon.jpg">

    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/modernizr.js"></script>
</head>
<script>(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/pl_PL/sdk.js#xfbml=1&version=v2.5&appId=1582359612044665";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>
<body>
    
    
    <div class="bg-image"></div>
    <div class="overlay-bg"></div>

    <div class="main-content">
        <div class="container">
            <div class="row">

                <div class="col-md-2 visible-md visible-lg">
                    <div class="main_menu">
                        <ul class="menu">
                            <li><a class="show-5 homebutton" href="#" data-toggle="tooltip" data-original-title="STRONA GŁÓWNA"><i class="fa fa-home"></i></a></li>
                            <li><a class="show-2" href="#" data-toggle="tooltip" data-original-title="LISTA SERWERÓW"><i class="fa fa-user"></i></a></li>
                            <li><a class="show-3" href="#" data-toggle="tooltip" data-original-title="GILDIA"><i class="fa fa-users"></i></a></li>
                            <li><a href="g" target="_blank" data-toggle="tooltip" data-original-title="SKLEP"><i class="fa fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                </div>

                <div class="col-md-10">

                      <div class="row">
                        <div class="col-md-12">
                            <div class="templatemo_logo">
                                <a href="#">
                                    <img src="images/logo.png" alt="Genius">
                                </a>
                            </div> 
                        </div>
                    </div>
                    <div id="menu-container">
                        
                    <div id="menu-1" class="homepage">
					    <div class="col-md-4 col-sm-6 col-xs-6">
						</div>
						</div>
						
					<div id="menu-5" class="homepage">
                            <div class="page-header">
                                <h2 class="page-title">Informacje</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                  <div class="fb-page" data-href="/" data-tabs="timeline" data-width="620" data-height="600" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false"><div class="fb-xfbml-parse-ignore"><blockquote cite="/"><a href="/">L</a></blockquote></div></div>
                                </div> 
                            </div>
                        </div> 
					
                        <div id="menu-2" class="content about-us">
                            <div class="page-header">
                                <h2 class="page-title">Serwery</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                    <div class="col-md-7">
                                        <h3 class="widget-title">Lista Serwerów:</h3>
										<p><b><span style="float:left">IP</span><span style="float:right">Status:</span></p></b>
										<br><b><p><span style="float:left">IP</span><span style="float:right">Status:</span></br></p></b>
                                    </div> 
                                </div> 
                            </div>
                        </div> 

 

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano
<?php

require 'api.php';

function status()
{
    if(getPlayers()) {
        echo 'Online';
    } else {
        echo 'Offline';
    }
}

?>

<!DOCTYPE html>

<head>
    <title>fgggg</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="opis">
    <meta charset="UTF-8">

    <link href='http://fonts.googleapis.com/css?family=Dosis:300,400,500,600,700,800' rel='stylesheet' type='text/css'>
        
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet" media="screen">
    <link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
    <link rel="stylesheet" href="css/misc.css">
    <link rel="stylesheet" href="css/animate.css">
    <link href="css/style.css" rel="stylesheet" media="screen">

	
        

    <link rel="shortcut icon" href="images/ico/favicon.jpg">

    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/modernizr.js"></script>
</head>
<script>(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/pl_PL/sdk.js#xfbml=1&version=v2.5&appId=1582359612044665";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>
<body>
    
    
    <div class="bg-image"></div>
    <div class="overlay-bg"></div>

    <div class="main-content">
        <div class="container">
            <div class="row">

                <div class="col-md-2 visible-md visible-lg">
                    <div class="main_menu">
                        <ul class="menu">
                            <li><a class="show-5 homebutton" href="#" data-toggle="tooltip" data-original-title="STRONA GŁÓWNA"><i class="fa fa-home"></i></a></li>
                            <li><a class="show-2" href="#" data-toggle="tooltip" data-original-title="LISTA SERWERÓW"><i class="fa fa-user"></i></a></li>
                            <li><a class="show-3" href="#" data-toggle="tooltip" data-original-title="GILDIA"><i class="fa fa-users"></i></a></li>
                            <li><a href="g" target="_blank" data-toggle="tooltip" data-original-title="SKLEP"><i class="fa fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                </div>

                <div class="col-md-10">

                      <div class="row">
                        <div class="col-md-12">
                            <div class="templatemo_logo">
                                <a href="#">
                                    <img src="images/logo.png" alt="Genius">
                                </a>
                            </div> 
                        </div>
                    </div>
                    <div id="menu-container">
                        
                    <div id="menu-1" class="homepage">
					    <div class="col-md-4 col-sm-6 col-xs-6">
						</div>
						</div>
						
					<div id="menu-5" class="homepage">
                            <div class="page-header">
                                <h2 class="page-title">Informacje</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                  <div class="fb-page" data-href="/" data-tabs="timeline" data-width="620" data-height="600" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false"><div class="fb-xfbml-parse-ignore"><blockquote cite="/"><a href="/">L</a></blockquote></div></div>
                                </div> 
                            </div>
                        </div> 
					
                        <div id="menu-2" class="content about-us">
                            <div class="page-header">
                                <h2 class="page-title">Serwery</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                    <div class="col-md-7">
                                        <h3 class="widget-title">Lista Serwerów:</h3>
										<p><b><span style="float:left">IP</span><span style="float:right">Status: <?php status() ?></span></p></b>
										<br><b><p><span style="float:left">IP</span><span style="float:right">Status:</span></br></p></b>
                                    </div> 
                                </div> 
                            </div>
                        </div> 

 

anNO14B_460sa.gif

Opublikowano

Stwórz Tablicę z serwerami w pliku strony:

//Według wzoru uzupełnij poniższą tablicę Nazwa serwera, IP serwera, port serwera
$servers = [['s01','127.0.0.1','25565'],['s02','127.0.0.2','25565'],['s03','127.0.0.3','25565']];
$connections = [];

$serversCount = count($servers);
for($i=0;$i<=($serversCount-1);$i++){
	$connection = new MinecraftQuery();
	try{
		$connection->Connect($servers[$i][1], $servers[$i][2], 1);
	}
	catch( MinecraftQueryException $e ){
		$Error = $e->getMessage( );
	}
	$connections[$servers[$i][0]]=$connection;
}

function statuses(){ 
	foreach($connections as $serverName=>$connection){
  		if($connection->GetPlayers()){
  			$status = 'online';
  		}
  		else {
  			$status = 'offline';
  		}
 		echo $serverName.' jest '.$status;
  	}
}

Teraz funkcją statuses() będziesz mógł wyświetlić statusy serwera, dowolnie zmień sobie ich wyświetlanie w powyższym kodzie.

a w api.php usuń

define( 'MQ_SERVER_ADDR', '' ); //ip serwera
define( 'MQ_SERVER_PORT',  ); //port query
define( 'MQ_TIMEOUT', 1 );

oraz

$Query = new MinecraftQuery( );
	
try
{
	$Query->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT );
}
catch( MinecraftQueryException $e )
{
	$Error = $e->getMessage( );
}

 

Nie gwarantuję, że kod zadziała, mogą być literówki czy cośtam - nie chciało mi się tego sprawdzać, ale masz podstawę.

Z góry przepraszam jeżeli napisałem jakąś głupotę, ale jestem po nocce i mózg już niestety wolno pracuje...

= SygnaturA =

Made by... ME. 

 

Odkrywca
Opublikowano
Dnia 8.11.2017 o 11:54, Damian_RastMan napisał:

Stwórz Tablicę z serwerami w pliku strony:


//Według wzoru uzupełnij poniższą tablicę Nazwa serwera, IP serwera, port serwera
$servers = [['s01','127.0.0.1','25565'],['s02','127.0.0.2','25565'],['s03','127.0.0.3','25565']];
$connections = [];

$serversCount = count($servers);
for($i=0;$i<=($serversCount-1);$i++){
	$connection = new MinecraftQuery();
	try{
		$connection->Connect($servers[$i][1], $servers[$i][2], 1);
	}
	catch( MinecraftQueryException $e ){
		$Error = $e->getMessage( );
	}
	$connections[$servers[$i][0]]=$connection;
}

function statuses(){ 
	foreach($connections as $serverName=>$connection){
  		if($connection->GetPlayers()){
  			$status = 'online';
  		}
  		else {
  			$status = 'offline';
  		}
 		echo $serverName.' jest '.$status;
  	}
}

Teraz funkcją statuses() będziesz mógł wyświetlić statusy serwera, dowolnie zmień sobie ich wyświetlanie w powyższym kodzie.

a w api.php usuń


define( 'MQ_SERVER_ADDR', '' ); //ip serwera
define( 'MQ_SERVER_PORT',  ); //port query
define( 'MQ_TIMEOUT', 1 );

oraz


$Query = new MinecraftQuery( );
	
try
{
	$Query->Connect( MQ_SERVER_ADDR, MQ_SERVER_PORT, MQ_TIMEOUT );
}
catch( MinecraftQueryException $e )
{
	$Error = $e->getMessage( );
}

 

Nie gwarantuję, że kod zadziała, mogą być literówki czy cośtam - nie chciało mi się tego sprawdzać, ale masz podstawę.

Z góry przepraszam jeżeli napisałem jakąś głupotę, ale jestem po nocce i mózg już niestety wolno pracuje...

Niestety nie działa mi to bądź źle coś robię :/

Poproszę o dalszą pomoc gdyż jestem zielony :(

 

Dziękuję za wszelką pomoc.

Odkrywca
Opublikowano
2 godziny temu, GaCeL napisał:

<?php

require 'api.php';

function status()
{
    if(getPlayers()) {
        echo 'Online';
    } else {
        echo 'Offline';
    }
}

?>

<!DOCTYPE html>

<head>
    <title>fgggg</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="opis">
    <meta charset="UTF-8">

    <link href='http://fonts.googleapis.com/css?family=Dosis:300,400,500,600,700,800' rel='stylesheet' type='text/css'>
        
    <link href="bootstrap/css/bootstrap.css" rel="stylesheet" media="screen">
    <link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
    <link rel="stylesheet" href="css/misc.css">
    <link rel="stylesheet" href="css/animate.css">
    <link href="css/style.css" rel="stylesheet" media="screen">

	
        

    <link rel="shortcut icon" href="images/ico/favicon.jpg">

    <script src="js/jquery-1.10.2.min.js"></script>
    <script src="js/modernizr.js"></script>
</head>
<script>(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/pl_PL/sdk.js#xfbml=1&version=v2.5&appId=1582359612044665";
    fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>
<body>
    
    
    <div class="bg-image"></div>
    <div class="overlay-bg"></div>

    <div class="main-content">
        <div class="container">
            <div class="row">

                <div class="col-md-2 visible-md visible-lg">
                    <div class="main_menu">
                        <ul class="menu">
                            <li><a class="show-5 homebutton" href="#" data-toggle="tooltip" data-original-title="STRONA GŁÓWNA"><i class="fa fa-home"></i></a></li>
                            <li><a class="show-2" href="#" data-toggle="tooltip" data-original-title="LISTA SERWERÓW"><i class="fa fa-user"></i></a></li>
                            <li><a class="show-3" href="#" data-toggle="tooltip" data-original-title="GILDIA"><i class="fa fa-users"></i></a></li>
                            <li><a href="g" target="_blank" data-toggle="tooltip" data-original-title="SKLEP"><i class="fa fa-shopping-cart"></i></a></li>
                        </ul>
                    </div>
                </div>

                <div class="col-md-10">

                      <div class="row">
                        <div class="col-md-12">
                            <div class="templatemo_logo">
                                <a href="#">
                                    <img src="images/logo.png" alt="Genius">
                                </a>
                            </div> 
                        </div>
                    </div>
                    <div id="menu-container">
                        
                    <div id="menu-1" class="homepage">
					    <div class="col-md-4 col-sm-6 col-xs-6">
						</div>
						</div>
						
					<div id="menu-5" class="homepage">
                            <div class="page-header">
                                <h2 class="page-title">Informacje</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                  <div class="fb-page" data-href="/" data-tabs="timeline" data-width="620" data-height="600" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="false"><div class="fb-xfbml-parse-ignore"><blockquote cite="/"><a href="/">L</a></blockquote></div></div>
                                </div> 
                            </div>
                        </div> 
					
                        <div id="menu-2" class="content about-us">
                            <div class="page-header">
                                <h2 class="page-title">Serwery</h2>
                            </div> 
                            <div class="content-inner">
                                <div class="row">
                                    <div class="col-md-7">
                                        <h3 class="widget-title">Lista Serwerów:</h3>
										<p><b><span style="float:left">IP</span><span style="float:right">Status: <?php status() ?></span></p></b>
										<br><b><p><span style="float:left">IP</span><span style="float:right">Status:</span></br></p></b>
                                    </div> 
                                </div> 
                            </div>
                        </div> 

 

Wszystko super :) Tylko powiedz mi bo jak widzisz chciałbym dodać więcej niż jeden serwer :) I jak to działać będzie. Tak samo powiedz mi jak mam wpisać IP oraz port (w którym miejscu).

Pozdrawiam serdecznie :)

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...