Помогите Нужно сделать вывод игроков онлайн с помощью AuthMe и phpMyAdmin

  • Автор темы Автор темы DonMK
  • Дата начала Дата начала

DonMK

Активный участник
Пользователь
Баллы
63
Ник в Minecraft
DonMK
Подскажите, связал authme и sql
игроки отображаются
upload_2015-5-26_23-14-24.pngъ
но все плееры всегда офлайн, то биш не меняется значение когда игрок онлайн и офлайн
upload_2015-5-26_23-15-23.png

значение isLogged всегда 0, я понял что когда человек онлайн оно должно меняться,
или как с помощью sql вывести количество человек онлайн на сервере?

ПОМОГИТЕ ПОЖАЛУЙСТА
 
Вот норм
<?php

class Server {
/**
* @var string name of itself for testing
*/
public static $classname = 'Server';

/**
* Queries a Minequery server.
*
* @Static
* @param string $address The address to the Minequery server.
* @param int $port The port of the Minequery server.
* @param int $timeout The time given before the connection attempt gives up.
* @return array|bool An array on success, FALSE on failure.
*/
public static function query($address, $port = 25566, $timeout = 30) {
global $db;

$query = array();

$write = "QUERY\n";

$class = self::$classname;

$response = $class::read($address, $port, $errno, $errstr, $timeout, $write, $latency);

if (false === $response) {
return false;
}

$response = explode("\n", $response);


// Server port
$query['serverPort'] = explode(" ", $response[0], 2);
$query['serverPort'] = $query['serverPort'][1];

// Player count
$query['playerCount'] = explode(" ", $response[1], 2);
$query['playerCount'] = $query['playerCount'][1];

// Max players
$query['maxPlayers'] = explode(" ", $response[2], 2);
$query['maxPlayers'] = $query['maxPlayers'][1];

// Record players
$stm = $db->query("SELECT * FROM `online_record`");
$rec = $stm->fetch(PDO::FETCH_ASSOC);
$record = $rec['record'];
if($query['playerCount'] > $record){$db->query("UPDATE `online_record` SET `record`='{$query['playerCount']}' WHERE `record`={$record}");}
$query['record'] = $record;

// Player list
list(, $buffer) = explode(" ", $response[3], 2);
$buffer = trim($buffer, "[] ");
$query['playerList'] = $buffer ? explode(", ", $buffer) : array();

$query['latency'] = $latency;

return $query;
}

/**
* Queries a Minequery server using JSON.
*
* @Static
* @param string $address The address to the Minequery server.
* @param int $port The port of the Minequery server.
* @param int $timeout The time given before the connection attempt gives up.
* @return object|bool A stdClass object on success, FALSE on failure.
*/
public static function query_json($address, $port = 25566, $timeout = 30) {
$beginning_time = microtime(true);

$socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

if (!$socket) {
// Could not establish a connection to the server.
return false;
}

$end_time = microtime(true);

fwrite($socket, "QUERY_JSON\n");

$response = "";

while (!feof($socket)) {
$response .= fgets($socket, 1024);
}

$query = json_decode($response);
$query->latency = ($end_time - $beginning_time) * 1000;

return $query;
}

/**
* Queries a Remote Socket
*
* @Static
* @param string $address The address to the Minequery server.
* @param int $port The port of the Minequery server.
* @param int $errno
* @param string $errstr
* @param int $timeout The time given before the connection attempt gives up.
* @param string $write
* @param int $latency
* @return string|bool An string on success, FALSE on failure.
*/
protected static function read($address, $port, &$errno, &$errstr, $timeout, $write, &$latency) {
$latency = NULL;

$beginning_time = microtime(true);

$socket = @fsockopen($address, $port, $errno, $errstr, $timeout);

if (!$socket) {
// Could not establish a connection to the server.
return false;
}

$end_time = microtime(true);

$latency = ($end_time - $beginning_time) * 1000;

fwrite($socket, $write);

$response = "";

while (!feof($socket)) {
$response .= fgets($socket, 1024);
}

return $response;
}
}
?>
 
некропостер =)
у меня всё проще 🥷 (Thermos-1.7.10-1614-58) и вынь сервер
чисто для себя и друзей(и их друзей) потому линьку ставить не стал
да и познаний java маловато чтоб написать плагин
потому использовал вот такой вариант на консоли (bat)
for /f "tokens=5" %%i in ('find /i "Сейчас" "logs\latest.log"') do set /a onl=%%i &echo online %%i >online.txt
if 0==%onl% (echo - >players.txt
) else (
for /f "tokens=5 delims=:" %%i in ('find /i "Players:" "logs\latest1.log"') do echo %%i >players.txt)
правда тут не обошлось без плагина AutoSaveWorld
intervalmode:
enabled: true
intervals:
'60':
- online
недостаток только в том что он каждую минуту спамит в консоль
и записывает максимум только 100 никнеймов в онлайне
вот и всё что хотелось сказать увидев эту тему
прошу не ругать - я ведь без плохих мыслей
 
некропостер =)
у меня всё проще 🥷 (Thermos-1.7.10-1614-58) и вынь сервер
чисто для себя и друзей(и их друзей) потому линьку ставить не стал
да и познаний java маловато чтоб написать плагин
потому использовал вот такой вариант на консоли (bat)
for /f "tokens=5" %%i in ('find /i "Сейчас" "logs\latest.log"') do set /a onl=%%i &echo online %%i >online.txt
if 0==%onl% (echo - >players.txt
) else (
for /f "tokens=5 delims=:" %%i in ('find /i "Players:" "logs\latest1.log"') do echo %%i >players.txt)
правда тут не обошлось без плагина AutoSaveWorld
intervalmode:
enabled: true
intervals:
'60':
- online
недостаток только в том что он каждую минуту спамит в консоль
и записывает максимум только 100 никнеймов в онлайне
вот и всё что хотелось сказать увидев эту тему
прошу не ругать - я ведь без плохих мыслей
Держи, все что тебе остается, это прочитать js скриптом. https://cloud.mail.ru/public/3niW7k3UykCp/Мои плагины/Exemple-server/
А 2 веерсия, это уже полноценный мониторинг на плагине, но без ников игроков.
 
Назад
Верх Низ