Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/08/17 in all areas

  1. Create file `pm.js` to directory `packages/keker/commands` with the following code: findPlayerByIdOrNickname = playerName => { let foundPlayer = null; // If playerName is numberic if (playerName == parseInt(playerName)) { // search player by ID foundPlayer = mp.players.at(playerName); } // or search player by nickname if (!foundPlayer) { mp.players.forEach((_player) => { if (_player.name === playerName) { foundPlayer = _player; } }); } return foundPlayer; }; module.exports = { // Add command `/pm` "pm": (player, args) => { // Check args if (args.length < 3 || !args[1].length || !args[2].length) { player.outputChatBox('Valid syntax: <b>/pm [recipient_id_or_nickname] [text_message]</b>'); return false; } // Search recipient by second argument const recipient = findPlayerByIdOrNickname(args[1]); // If recipient not found show special message if (!recipient) { player.outputChatBox('<b>User not found</b>'); return false; } // Source message const message = args.slice(2).join(' '); // Generate chat string in the following format: // [PM] Sender_Nickname[Sender_Id] -> Recipient_Nickname[Recipient_Id]: Text message const str = `<b>[PM] ${player.name}[${player.id}] -> ${recipient.name}[${recipient.id}]</b>: ${message}`; // Send message to recipient recipient.outputChatBox(str); // Send message to sender player.outputChatBox(str); } }; Now if you write in the chat: `/pm [id_or_nickname] [text_message]` you send the private message.
    2 points
  2. Create file `monitoring.js` to directory `packages/keker` with the following code: // Require nodejs module `http` const http = require('http'); // Create web server const server = http.createServer(function(request, response) { // Show monitoring for any request 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(); }); // Turn on the web server on the port 8080 // (you can change it to any port) server.listen(8080); // Show message in terminal about successful starting of Monitoring Server console.log('\nMonitoring Server is listening'); Append to file `packages/keker/index.js` the following code: require('./monitoring'); Now when you open url http://your_ip:8080 you see the following data: Also you can change the port of web server in `monitoring.js`. And you can change the data format to JSON if you need.
    2 points
  3. Вступление. Привет работяги! В этой статье я попробую рассказать как быстро начать работать с PostgreSQL . Чем эта СУБД лучше чем MySQL я не буду писать. Если вам интересно, то можно почитать тут Начинаем кодить! Для начала ставим такую библиотеку: npm install pg-promise (если вы не знаете что это, то почитайте это) Устанавливаем и запускаем PostgreSQL, если у вас он еще не стоит. ОК, если все установилось, то создаем папку lib в корне вашего мода. У меня это получилось так: D:\winsrv\packages\vrp\lib В папке lib создаем файл db.js В этом файле мы подключаемся к нашей БД. Тут думаю все понятно по коду. const pgp = require('pg-promise')(); const cn = { host: 'localhost', port: 5432, database: 'vrp', user: 'postgres', password: 'postgres' }; const db = pgp(cn); module.exports = db; Теперь в любом файле где нам нужно работать с БД мы просто пишем: Если у вас ошибка типа db is not defined, то вы забыли написать это! const db = require('тут пишем путь до файла db.js'); // Пример пути: './../lib/db.js' Давайте попробуем загрузить данные о пользователе, если он зайдет к нам на сервер. Не забываем в начале файла common.js прописать: const db = require('./../lib/db.js'); В файле common.js ищем обработчик события playerJoin : module.exports = { "playerJoin" : player => { // сюда добавляем db.any("select * from users where name=$1", [player.name]) .then(function (data) { console.log("data: %j", data); // выводим данные о пользователе }) .catch(function (error) { console.log("ERROR:", error.message || error); // выводим ошибку }); } } Вот что у нас получится Полезные ссылки: Github Примеры работы с библиотекой Документация
    1 point
  4. If it's already integrated ?
    1 point
  5. Обязательно требуется указать, что ваш вариант подходит только для тех серверов, которые являются публичными (у которых в `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": И теперь при заходе на http://ip_вашего_сервера:8080 вы будете видеть: Uptime указывается в секундах. Если вы на своём компьютере сервер запустили - то мониторинг будет доступен по ссылке: http://127.0.0.1:8080 Можно также в JSON выводить все эти данные в мониторинг, а потом сайтом подхватывать их.
    1 point
×
×
  • Create New...