LenZ
Нуль
- Регистрация
- 16 Окт 2016
- Сообщения
- 5
- Лучшие ответы
- 0
- Репутация
- 0
Доброго времени суток.
Многие искали мониторинг сервера SA:MP для DLE 9.7 и выше.
Вот он,нашел я в жопе где нету автора и он не очень был,и инструкции не было.
Я дороботал и отдаю Вам.
Установка:
1.Откройте
в главной директории сайта.
2.Найдите
3.Ниже
вставьте
4.Найдите
5.ВЫШЕ
вставьте
6.Откройте папку
7.Откройте папку
8.Создайте папку
9.Создать файл [/CODE] monitoring.php [/CODE]
10.Вставить туда это:
[HIDE=0]
[/HIDE]
10.Сохранить
11.Создать файл
12.Вставить это:
[HIDE=0]
[/HIDE]
13.Что бы показать мониторинг используйте тэг: {server_samp}
Прошу поставить "+" если Вам помогло или пригодилось.На это все.Многие искали мониторинг сервера SA:MP для DLE 9.7 и выше.
Вот он,нашел я в жопе где нету автора и он не очень был,и инструкции не было.
Я дороботал и отдаю Вам.
Установка:
1.Откройте
PHP:
index.php
2.Найдите
PHP:
require_once ROOT_DIR . '/engine/init.php';
PHP:
require_once ROOT_DIR . '/engine/init.php';
PHP:
require_once ROOT_DIR . '/engine/modules/msamp/monitoring.php';
PHP:
$tpl->set ( '{calendar}', $tpl->result['calendar'] );
PHP:
$tpl->set ( '{calendar}', $tpl->result['calendar'] );
PHP:
$tpl->set('{server_samp}', $server_samp);
Код:
engine
Код:
modules
Код:
msamp
10.Вставить туда это:
[HIDE=0]
PHP:
<?php
require_once ENGINE_DIR.'/modules/msamp/API.php';
$ip = "localhost"; //IP адрес сервера
$port = "7777"; //Порт сервера
$query = new SampQueryAPI('ip', 'port');
{
$aInformation = $query->getInfo();
$aServerRules = $query->getRules();
}
// Шаблон для вывода блока SAMP Мониторинга
$server_samp =
"<center>
<b>".$aInformation['hostname']."</b><br><br>
<b>IP:</b> ".$ip.":".$port."<br>
<b>Игроков: </b>".$aInformation[players]."/".$aInformation[maxplayers]."<br>
<b>Карта: </b>".$aInformation[mapname]."<br>
<b>Gamemode: </b>".$aInformation[gamemode]."
</center>";
?>
10.Сохранить
11.Создать файл
Код:
API.php
[HIDE=0]
PHP:
<?php
class SampQueryAPI
{
private $rSocket = false;
private $aServer = array();
public function __construct($sServer, $iPort = 7777)
{
$this->aServer[0] = $sServer;
$this->aServer[1] = $iPort;
$this->rSocket = fsockopen('udp://'.$this->aServer[0], $this->aServer[1], $iError, $sError, 2);
if(!$this->rSocket)
{
$this->aServer[4] = false;
return;
}
socket_set_timeout($this->rSocket, 2);
$sPacket = 'SAMP';
$sPacket .= chr(strtok($this->aServer[0], '.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr($this->aServer[1] & 0xFF);
$sPacket .= chr($this->aServer[1] >> 8 & 0xFF);
$sPacket .= 'p4150';
fwrite($this->rSocket, $sPacket);
if(fread($this->rSocket, 10))
{
if(fread($this->rSocket, 5) == 'p4150')
{
$this->aServer[4] = true;
return;
}
}
$this->aServer[4] = false;
}
public function __destruct()
{
@fclose($this->rSocket);
}
public function isOnline()
{
return isset($this->aServer[4]) ? $this->aServer[4] : false;
}
public function getInfo()
{
@fwrite($this->rSocket, $this->createPacket('i'));
fread($this->rSocket, 11);
$aDetails['password'] = (integer) ord(fread($this->rSocket, 1));
$aDetails['players'] = (integer) $this->toInteger(fread($this->rSocket, 2));
$aDetails['maxplayers'] = (integer) $this->toInteger(fread($this->rSocket, 2));
$iStrlen = ord(fread($this->rSocket, 4));
if(!$iStrlen) return -1;
$aDetails['hostname'] = (string) fread($this->rSocket, $iStrlen);
$iStrlen = ord(fread($this->rSocket, 4));
$aDetails['gamemode'] = (string) fread($this->rSocket, $iStrlen);
$iStrlen = ord(fread($this->rSocket, 4));
$aDetails['mapname'] = (string) fread($this->rSocket, $iStrlen);
return $aDetails;
}
public function getBasicPlayers()
{
@fwrite($this->rSocket, $this->createPacket('c'));
fread($this->rSocket, 11);
$iPlayerCount = ord(fread($this->rSocket, 2));
$aDetails = array();
if($iPlayerCount > 0)
{
for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)
{
$iStrlen = ord(fread($this->rSocket, 1));
$aDetails[] = array
(
"nickname" => (string) fread($this->rSocket, $iStrlen),
"score" => (integer) $this->toInteger(fread($this->rSocket, 4)),
);
}
}
return $aDetails;
}
public function getDetailedPlayers()
{
@fwrite($this->rSocket, $this->createPacket('d'));
fread($this->rSocket, 11);
$iPlayerCount = ord(fread($this->rSocket, 2));
$aDetails = array();
for($iIndex = 0; $iIndex < $iPlayerCount; ++$iIndex)
{
$aPlayer['playerid'] = (integer) ord(fread($this->rSocket, 1));
$iStrlen = ord(fread($this->rSocket, 1));
$aPlayer['nickname'] = (string) fread($this->rSocket, $iStrlen);
$aPlayer['score'] = (integer) $this->toInteger(fread($this->rSocket, 4));
$aPlayer['ping'] = (integer) $this->toInteger(fread($this->rSocket, 4));
$aDetails[] = $aPlayer;
unset($aPlayer);
}
return $aDetails;
}
public function getRules()
{
@fwrite($this->rSocket, $this->createPacket('r'));
fread($this->rSocket, 11);
$iRuleCount = ord(fread($this->rSocket, 2));
$aReturn = array();
for($iIndex = 0; $iIndex < $iRuleCount; ++$iIndex)
{
$iStrlen = ord(fread($this->rSocket, 1));
$sRulename = (string) fread($this->rSocket, $iStrlen);
$iStrlen = ord(fread($this->rSocket, 1));
$aDetails[$sRulename] = (string) fread($this->rSocket, $iStrlen);
}
return $aDetails;
}
private function toInteger($sData)
{
if($sData === "")
{
return null;
}
$iInteger = 0;
$iInteger += (ord($sData[0]));
if(isset($sData[1]))
{
$iInteger += (ord($sData[1]) << 8);
}
if(isset($sData[2]))
{
$iInteger += (ord($sData[2]) << 16);
}
if(isset($sData[3]))
{
$iInteger += (ord($sData[3]) << 24);
}
if($iInteger >= 4294967294)
{
$iInteger -= 4294967296;
}
return $iInteger;
}
private function createPacket($sPayload)
{
$sPacket = 'SAMP';
$sPacket .= chr(strtok($this->aServer[0], '.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr(strtok('.'));
$sPacket .= chr($this->aServer[1] & 0xFF);
$sPacket .= chr($this->aServer[1] >> 8 & 0xFF);
$sPacket .= $sPayload;
return $sPacket;
}
}
13.Что бы показать мониторинг используйте тэг: {server_samp}
Последнее редактирование: