DuKKeR Posted January 2, 2017 Share Posted January 2, 2017 (edited) Доброго времени суток. Хочу представить пример парсинга мастер-листа и получения информации о вашем сервере. Скриншот: Код на PHP: $ip = '91.76.227.40'; // Ip адрес сервера $port = 22005; // Port сервера $ch = curl_init('https://ml.rage.mp/servers'); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $resp = curl_exec( $ch ); curl_close( $ch ); $resp = json_decode($resp , true); foreach($resp as $val) { if($val['ip'] == $ip and $val['port'] == $port) { echo 'PHP<hr>Id: '.$val['_id']; echo '<br>Название: '.$val['name']; echo '<br>Слотов: '.$val['slots']; echo '<br>Игроков: '.$val['players']; echo '<br>Uptime: '.$val['uptime']; break; } } Код на JavaScript: var ip = '91.76.227.40', // Ip адрес сервера port = 22005; // Port сервера $.getJSON('https://ml.rage.mp/servers', function(data) { $.each(data, function(key, val) { if(ip == val.ip && port == val.port) { document.write('JavaScript<hr>Id: '+val._id); document.write('<br>Название: '+val.name); document.write('<br>Слотов: '+val.slots); document.write('<br>Игроков: '+val.players); document.write('<br>Uptime: '+val.uptime); return false; } }); }); Библиотека JQuery обязательна! Edited January 2, 2017 by DuKKeR 2 Link to comment Share on other sites More sharing options...
Leone Posted January 2, 2017 Share Posted January 2, 2017 Отлично! + Link to comment Share on other sites More sharing options...
tmaslov22 Posted January 4, 2017 Share Posted January 4, 2017 (edited) Можно проще на пыхе писать) <? $resp = json_decode(file_get_contents("https://ml.rage.mp/servers"), true); foreach($resp as $val) { if($val['ip'] == '5.187.1.159' && $val['port'] == 22005) { echo 'Id: '.$val['_id']; echo '<br>Название: '.$val['name']; echo '<br>Слотов: '.$val['slots']; echo '<br>Игроков: '.$val['players']; echo '<br>Uptime: '.$val['uptime']; break; } } Edited January 4, 2017 by tmaslov22 Link to comment Share on other sites More sharing options...
Danil_Valov Posted January 7, 2017 Share Posted January 7, 2017 (edited) Обязательно требуется указать, что ваш вариант подходит только для тех серверов, которые являются публичными (у которых в `conf.json` выставлено `"announce": true`. Иначе они не будут на сайте мониторинга rage.mp отображаться, и не будут попадать в json. И всё-таки, мне кажется, проще будет веб-сервер к вашему игровому серверу подключить (node-пакет `http` тот же) и через него выводить статистику. Как минимум, данные о сервере актуальнее будут. Да и нагрузка минимальна. Вот так можно это реализовать: Добавляем в папку `keker` файл monitoring.js со следующим содержанием: // Подключаем модуль http // (уже включён в nodejs, отдельно устанавливать не требуется) const http = require('http'); // Создаём новый веб-сервер const server = http.createServer(function(request, response) { // В ответ на любой запрос отдаём мониторинг response.writeHead(200, {"Content-Type": "text/html"}); response.write(`<br>Players: ${mp.players.length}/${mp.players.size}`); response.write(`<br>Uptime: ${process.uptime()}`); response.end(); }); //Запускаем веб-сервер на порту 8080 (можно поменять на любой другой) server.listen(8080); // Выводим в консоль информацию, что сервер запущен console.log('\nMonitoring Server is listening'); Добавляем в конец файла index.js, находящегося в этой же папке `keker`: ... require('./monitoring'); И после перезапуска сервера в терминале появится надпись "Monitoring Server is listening": Цитата Starting RAGE Multiplayer server. MaxPlayers: 100 Name: RAGE:MP Unofficial server Loading packages "keker" loaded Loading events: "commandhandler.js" - OK "common.js" - OK Monitoring Server is listening Loading commands: "basiccommands.js" - OK И теперь при заходе на http://ip_вашего_сервера:8080 вы будете видеть: Цитата Players: 1/100 Uptime: 637.516 Uptime указывается в секундах. Если вы на своём компьютере сервер запустили - то мониторинг будет доступен по ссылке: http://127.0.0.1:8080 Можно также в JSON выводить все эти данные в мониторинг, а потом сайтом подхватывать их. Edited January 7, 2017 by Danil_Valov 2 1 Link to comment Share on other sites More sharing options...
tharichev3399 Posted January 9, 2017 Share Posted January 9, 2017 Извините за флуд, можно функции мультиплеера, что то вроде samp-wiki, это будет ? Link to comment Share on other sites More sharing options...
Leone Posted January 10, 2017 Share Posted January 10, 2017 21 час назад, tharichev3399 сказал: Извините за флуд, можно функции мультиплеера, что то вроде samp-wiki, это будет ? https://wiki.rage.mp/wiki/index.php?title=Main_Page Link to comment Share on other sites More sharing options...
M4rK Posted January 13, 2017 Share Posted January 13, 2017 Норм урок. Link to comment Share on other sites More sharing options...
Akum Posted June 13, 2019 Share Posted June 13, 2019 Можно socket использовать, для обновление данных на сайте в реальном времени Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now