Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: samp monitor
Parašė ---· 2011 Sau. 23 17:01:13
#1
Sveiki, reikia samp monitoriaus panelės kad būtų galima normaliai redaguotis išvaizdą, o ne tokį kaip cancel.lt
Gal kas turi ka nors?
Parašė avice· 2011 Sau. 23 17:01:26
#2
Turiu kazkoki berods sampo
<?php
try
{
$rQuery = new QueryServer( $serverIP, $serverPort );
$aInformation = $rQuery->GetInfo( );
$aServerRules = $rQuery->GetRules( );
$aBasicPlayer = $rQuery->GetPlayers( );
$aTotalPlayers = $rQuery->GetDetailedPlayers( );
$serverIP = "193.46.83.161";
$serverPort = 8029;
$rQuery->Close( );
}
catch (QueryServerException $pError)
{
echo 'Serveris išjungtas';
}
if(isset($aInformation) && is_array($aInformation)){
?>
<?php
if(!is_array($aTotalPlayers) || count($aTotalPlayers) == 0){
echo '<br /><i>Niekas nežaidžia</i>';
} else {
?>
<?php
foreach($aTotalPlayers AS $id => $value){
?>
<?php
}
}
}
class QueryServer
{
private $szServerIP;
private $iPort;
private $rSocketID;
private $bStatus;
function __construct( $szServerIP, $iPort )
{
$this->szServerIP = $this->VerifyAddress( $szServerIP );
$this->iPort = $iPort;
if (empty( $this->szServerIP ) || !is_numeric( $iPort )) {
throw new QueryServerException( 'Either the ip-address or the port isn\'t filled in correctly.' );
}
$this->rSocketID = @fsockopen( 'udp://' . $this->szServerIP, $iPort, $iErrorNo, $szErrorStr, 5 );
if (!$this->rSocketID) {
throw new QueryServerException( 'Cannot connect to the server: ' . $szErrorStr );
}
socket_set_timeout( $this->rSocketID, 0, 500000 );
$this->bStatus = true;
}
function VerifyAddress( $szServerIP )
{
if (ip2long( $szServerIP ) !== false &&
long2ip( ip2long( $szServerIP ) ) == $szServerIP ) {
return $szServerIP;
}
$szAddress = gethostbyname( $szServerIP );
if ($szAddress == $szServerIP) {
return "";
}
return $szAddress;
}
function SendPacket( $cPacket )
{
$szPacket = 'SAMP';
$aIpChunks = explode( '.', $this->szServerIP );
foreach( $aIpChunks as $szChunk ) {
$szPacket .= chr( $szChunk );
}
$szPacket .= chr( $this->iPort & 0xFF );
$szPacket .= chr( $this->iPort >> 8 & 0xFF );
$szPacket .= $cPacket;
return fwrite( $this->rSocketID, $szPacket, strlen( $szPacket ) );
}
function GetPacket( $iBytes )
{
$iResponse = fread( $this->rSocketID, $iBytes );
if ($iResponse === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
$iLength = ord( $iResponse );
if ($iLength > 0)
return fread( $this->rSocketID, $iLength );
return "";
}
function Close( )
{
if ($this->rSocketID !== false) {
fclose( $this->rSocketID );
}
}
function toInteger( $szData )
{
$iInteger = 0;
$iInteger += ( ord( @$szData[ 0 ] ) );
$iInteger += ( ord( @$szData[ 1 ] ) << 8 );
$iInteger += ( ord( @$szData[ 2 ] ) << 16 );
$iInteger += ( ord( @$szData[ 3 ] ) << 24 );
if( $iInteger >= 4294967294 )
$iInteger -= 4294967296;
return $iInteger;
}
function GetInfo( )
{
if ($this->SendPacket('i') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
$szFirstData = fread( $this->rSocketID, 4 );
if (empty( $szFirstData ) || $szFirstData != 'SAMP') {
throw new QueryServerException( 'The server at ' . $this->szServerIP . ' is not an SA-MP Server.' );
}
fread( $this->rSocketID, 7 );
return array (
'Password' => ord( fread( $this->rSocketID, 1 ) ),
'Players' => $this->toInteger( fread( $this->rSocketID, 2 ) ),
'MaxPlayers' => $this->toInteger( fread( $this->rSocketID, 2 ) ),
'Hostname' => $this->GetPacket( 4 ),
'Gamemode' => $this->GetPacket( 4 ),
'Map' => $this->GetPacket( 4 )
);
}
function GetRules( )
{
if ($this->SendPacket('r') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Pop the first 11 bytes from the response;
fread( $this->rSocketID, 11 );
$iRuleCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iRuleCount; $i ++ ) {
$szRuleName = $this->GetPacket( 1 );
$aReturnArray[ $szRuleName ] = $this->GetPacket( 1 );
}
return $aReturnArray;
}
function GetPlayers( )
{
if ($this->SendPacket('c') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Again, pop the first eleven bytes send;
fread( $this->rSocketID, 11 );
$iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iPlayerCount; $i ++ )
{
$aReturnArray[ ] = array (
'Nickname' => $this->GetPacket( 1 ),
'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) )
);
}
return $aReturnArray;
}
function GetDetailedPlayers( )
{
if ($this->SendPacket('d') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
fread( $this->rSocketID, 11 );
$iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iPlayerCount; $i ++ ) {
$aReturnArray[ ] = array(
'PlayerID' => $this->toInteger( fread( $this->rSocketID, 1 ) ),
'Nickname' => $this->GetPacket( 1 ),
'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) ),
'Ping' => $this->toInteger( fread( $this->rSocketID, 4 ) )
);
}
return $aReturnArray;
}
function RCON($rcon, $command)
{
echo 'Password '.$rcon.' with '.$command;
if ($this->SendPacket('x '.$rcon.' '.$command) === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Pop the first 11 bytes from the response;
$aReturnArray = fread( $this->rSocketID, 11 );
echo fread( $this->rSocketID, 11 );
return $aReturnArray;
}
}
class QueryServerException extends Exception
{
private $szMessage;
function __construct( $szMessage )
{
$this->szMessage = $szMessage;
}
function toString( )
{
return $this->szMessage;
}
}
?>
o naudok taip:
<?php echo htmlentities($aInformation['XX']); ?>
XX:
Hostname
Gamemode
Players
MaxPlayers
Map
weather
worldtime
version
Parašė ---· 2011 Sau. 23 18:01:59
#3
Kazkaip nenori man sitas veikt
Parašė Arvydas· 2011 Sau. 23 18:01:57
#4
Už pora litukų numesčiau tokį gerą, žinoma būtų galima ir už koki mini dizainą. ;)
Parašė avice· 2011 Sau. 23 18:01:05
#5
Viskas cia veikia:
<?php
$serverIP = $_GET["ip"];
$serverPort = $_GET["port"];
try
{
$rQuery = new QueryServer( $serverIP, $serverPort );
$aInformation = $rQuery->GetInfo( );
$aServerRules = $rQuery->GetRules( );
$aBasicPlayer = $rQuery->GetPlayers( );
$aTotalPlayers = $rQuery->GetDetailedPlayers( );
$rQuery->Close( );
}
catch (QueryServerException $pError)
{
echo 'Serveris išjungtas';
}
if(isset($aInformation) && is_array($aInformation)){
?>
<?php
if(!is_array($aTotalPlayers) || count($aTotalPlayers) == 0){
echo '<br /><i>Niekas nežaidžia</i>';
} else {
?>
<?php
foreach($aTotalPlayers AS $id => $value){
?>
<?php
}
}
}
class QueryServer
{
private $szServerIP;
private $iPort;
private $rSocketID;
private $bStatus;
function __construct( $szServerIP, $iPort )
{
$this->szServerIP = $this->VerifyAddress( $szServerIP );
$this->iPort = $iPort;
if (empty( $this->szServerIP ) || !is_numeric( $iPort )) {
throw new QueryServerException( 'Either the ip-address or the port isn\'t filled in correctly.' );
}
$this->rSocketID = @fsockopen( 'udp://' . $this->szServerIP, $iPort, $iErrorNo, $szErrorStr, 0.2 );
if (!$this->rSocketID) {
throw new QueryServerException( 'Cannot connect to the server: ' . $szErrorStr );
}
socket_set_timeout( $this->rSocketID, 0, 500000 );
$this->bStatus = true;
}
function VerifyAddress( $szServerIP )
{
if (ip2long( $szServerIP ) !== false &&
long2ip( ip2long( $szServerIP ) ) == $szServerIP ) {
return $szServerIP;
}
$szAddress = gethostbyname( $szServerIP );
if ($szAddress == $szServerIP) {
return "";
}
return $szAddress;
}
function SendPacket( $cPacket )
{
$szPacket = 'SAMP';
$aIpChunks = explode( '.', $this->szServerIP );
foreach( $aIpChunks as $szChunk ) {
$szPacket .= chr( $szChunk );
}
$szPacket .= chr( $this->iPort & 0xFF );
$szPacket .= chr( $this->iPort >> 8 & 0xFF );
$szPacket .= $cPacket;
return fwrite( $this->rSocketID, $szPacket, strlen( $szPacket ) );
}
function GetPacket( $iBytes )
{
$iResponse = fread( $this->rSocketID, $iBytes );
if ($iResponse === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
$iLength = ord( $iResponse );
if ($iLength > 0)
return fread( $this->rSocketID, $iLength );
return "";
}
function Close( )
{
if ($this->rSocketID !== false) {
fclose( $this->rSocketID );
}
}
function toInteger( $szData )
{
$iInteger = 0;
$iInteger += ( ord( @$szData[ 0 ] ) );
$iInteger += ( ord( @$szData[ 1 ] ) << 8 );
$iInteger += ( ord( @$szData[ 2 ] ) << 16 );
$iInteger += ( ord( @$szData[ 3 ] ) << 24 );
if( $iInteger >= 4294967294 )
$iInteger -= 4294967296;
return $iInteger;
}
function GetInfo( )
{
if ($this->SendPacket('i') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
$szFirstData = fread( $this->rSocketID, 4 );
if (empty( $szFirstData ) || $szFirstData != 'SAMP') {
throw new QueryServerException( 'The server at ' . $this->szServerIP . ' is not an SA-MP Server.' );
}
fread( $this->rSocketID, 7 );
return array (
'Password' => ord( fread( $this->rSocketID, 1 ) ),
'Players' => $this->toInteger( fread( $this->rSocketID, 2 ) ),
'MaxPlayers' => $this->toInteger( fread( $this->rSocketID, 2 ) ),
'Hostname' => $this->GetPacket( 4 ),
'Gamemode' => $this->GetPacket( 4 ),
'Map' => $this->GetPacket( 4 )
);
}
function GetRules( )
{
if ($this->SendPacket('r') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Pop the first 11 bytes from the response;
fread( $this->rSocketID, 11 );
$iRuleCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iRuleCount; $i ++ ) {
$szRuleName = $this->GetPacket( 1 );
$aReturnArray[ $szRuleName ] = $this->GetPacket( 1 );
}
return $aReturnArray;
}
function GetPlayers( )
{
if ($this->SendPacket('c') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Again, pop the first eleven bytes send;
fread( $this->rSocketID, 11 );
$iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iPlayerCount; $i ++ )
{
$aReturnArray[ ] = array (
'Nickname' => $this->GetPacket( 1 ),
'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) )
);
}
return $aReturnArray;
}
function GetDetailedPlayers( )
{
if ($this->SendPacket('d') === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
fread( $this->rSocketID, 11 );
$iPlayerCount = ord( fread( $this->rSocketID, 2 ) );
$aReturnArray = array( );
for( $i = 0; $i < $iPlayerCount; $i ++ ) {
$aReturnArray[ ] = array(
'PlayerID' => $this->toInteger( fread( $this->rSocketID, 1 ) ),
'Nickname' => $this->GetPacket( 1 ),
'Score' => $this->toInteger( fread( $this->rSocketID, 4 ) ),
'Ping' => $this->toInteger( fread( $this->rSocketID, 4 ) )
);
}
return $aReturnArray;
}
function RCON($rcon, $command)
{
echo 'Password '.$rcon.' with '.$command;
if ($this->SendPacket('x '.$rcon.' '.$command) === false) {
throw new QueryServerException( 'Connection to ' . $this->szServerIP . ' failed or has dropped.' );
}
// Pop the first 11 bytes from the response;
$aReturnArray = fread( $this->rSocketID, 11 );
echo fread( $this->rSocketID, 11 );
return $aReturnArray;
}
}
class QueryServerException extends Exception
{
private $szMessage;
function __construct( $szMessage )
{
$this->szMessage = $szMessage;
}
function toString( )
{
return $this->szMessage;
}
}
?>
pavizdys katik padariau:
http://avice.us.lt/stat.php?ip=7...;port=3333
Parašė Jaunelis· 2012 Bal. 2 19:04:14
#7
Prikeliu šią seną temą, nes man meta errora su tuo integer:
turim tokį varianta:
function toInteger( $szData )
{
$iInteger = 0;
$iInteger += ( ord( @$szData[ 0 ] ) );
$iInteger += ( ord( @$szData[ 1 ] ) << 8 );
if( $iInteger >= 4294967294 )
$iInteger -= 4294967296;
return $iInteger;
}
Meta errora:
Uninitialized string offset: 1
Tai va butent šitam kode meta errora kaip jį pataisyt gal galima šią f-ciją perrašyt taip kad nemestu klaidos ? nes šeip veikia tik error logas va meta errora.