Search the Community

Showing results for '{query}'.


Didn't find what you were looking for? Try searching for:


More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • RAGE Multiplayer
    • Announcements
    • Discussion
    • Suggestions
    • RDR2 Multiplayer
  • Scripting
    • Scripting
    • Resources
  • Community
    • Support
    • Servers
    • Media Gallery
  • Non-English
    • Русский - Russian
    • Français - French
    • Deutsch - German
    • Espanol - Spanish
    • Română - Romanian
    • Portuguesa - Portuguese
    • Polski - Polish

Categories

  • Scripts
  • Gamemodes
  • Libraries
  • Plugins
  • Maps
  • Tools

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Facebook


Youtube


Skype


Web


VK

Found 91 results

  1. You can use exports. /* File: database.js */ var mysql = require('mysql'); const connection = mysql.createConnection({ host: "localhost", user: "root", database: 'brv_ragemp', password: "" }); connection.connect(function(err) { if (err) throw err; console.log("Connected!"); }); module.exports.connection = connection; Other file /* File: index.js */ var db = require ("./database"); db.connection.query("SELECT * FROM contas", (err, row, fields)=> { console.info(row); }); More info: https://www.w3schools.com/nodejs/nodejs_modules.asp
  2. I put this into query and execute : INSERT INTO accounts (socialName, password, status) VALUES ('Fusion', MD5('1234'), 1); But I see that is my database is not readable! Can you help how to put in diferent way?
  3. That should work... // Connection file var mysql = require('mysql'); module.exports = { Handle: null, Connect: function(callback) { this.Handle = mysql.createConnection({ host : 'your_host', user : 'your_user', password : 'your_pass', database : 'your_database' }); this.Handle.connect(function(e) { if ( !e ) { callback(); } else console.log ("Error in Database " + e); }); } }; // White list file var db = require("./database"); mp.events.add("playerJoin", (player) => { db.Handle.query("SELECT * FROM whitelist WHERE socialID = ?", [player.socialClub], function(e, result) { if (!result.length){ player.kick("Not in whitelist."); }else{ // In Whitelist :) } }); But instead of using the social club, I recommend creating a login with a unique user ID. Players with pirate gta do not have the socialClub! Sorry for my English, I'm Brazilian.
  4. Как вариант еще так можешь записать. sql.query("INSERT INTO users (login, password, rights) VALUES (?,?,?)", [player.name, password, rights], function (e, r) { if (e) throw e; console.log(r); });
  5. Добрый день. Я пытаюсь считать данные из таблицы и вывести их в консоль, но ничего не выводится. Что сделано: Установлен сервер mysql, а также Workbench. Посредством workbench создана таблица users. Установлен node.js и модуль mysql. Привожу код подключения: var mysql = require('mysql'); var sql = mysql.createConnection({ host : 'localhost', user : 'some_user', password : 'some_password', database : 'some_db' }); sql.connect(function(err){ if(err){ console.log('error'); }else{ console.log('connected'); } }); В консоли пишет connected. И внесенные данные выводит. Но когда пытаюсь внести в таблицу данные: sql.query("INSERT INTO users (login, password, rights) VALUES ("+player.name+", pass, 1)"); То ничего не выходит. Прошу помощи)
  6. Не нужно исключение генерировать sql.query("INSERT INTO users (login, password, rights) VALUES ("+player.name+", 1234, 1)", function(err, result){ if(err){ console.log(err.message); }else{ console.log('inserted'); } });
  7. sql.query("INSERT INTO users (login, password, rights) VALUES ("+player.name+", 1234, 1)", function(err, result){ if(err){ throw err; console.log(err); }else{ console.log('inserted'); } }); Так?
  8. Спасибо, всё работает, 100%. Вот можете ещё кое в чем помочь? Захожу на сервер и нажимаю на ALT+TAB (ну сверну окно) игра через 3 сек закрывается а в консоли сервера пишет вот что: [N] Incoming connection from 127.0.0.1:64859 d:\Download\GAMES\progress\packages\keker\commands\database.js:798: Uncaught Error: Cannot enqueue Query after invoking quit. events.js:4638: Uncaught Error: Cannot enqueue Quit after invoking quit. d:\Download\GAMES\progress\packages\keker\commands\database.js:798: Uncaught Error: Cannot enqueue Query after invoking quit. events.js:4638: Uncaught Error: Cannot enqueue Quit after invoking quit. [N] 127.0.0.1:64859 timed out.
  9. Привет! Для начала тебе необходимо установить node.js, а затем загрузить пакет для работы с mysql. Как это сделать описано здесь. После этого необходимо создать скрип, который будет заниматься регистрацией наших пользователей. Перейдем в каталог server\packages\keker\commands и создадим файл с именем database.js и поместим в него следующий код: var mysql = require('mysql'); var connection = mysql.createConnection({ //создаем подключение к БД host : 'localhost', user : 'root', password : '', database : 'WARNB' }); module.exports = //добавляем новые команды пользователей { "login": (player, args) => { if(args.length == 3){ //параметров должно быть 3 (команда, логин, пароль) connection.connect(); //подключаемся к БД connection.query('SELECT * FROM `users` WHERE `login` = "' + args[1] + '" AND `password` = "' + args[2] +'";', function(err, rows, fields) { //делаем запрос if (err){ //если возникла ошибка player.outputChatBox("Ошибка входа. Попробуйте снова"); //выводим в чат сообщение об ошибке throw err; } else{ console.log(rows[0].login, ' is login'); //выводим информацию о входе в консоль player.outputChatBox("Добро пожаловать, " + rows[0].login); //выводим информацию о входе в чат игрока } }); connection.end(); //завершаем соединение } else player.outputChatBox("Используйте /login [имя пользователя] [пароль] для входа"); //если количество параметров не соответвует 3 }, "registration": (player, args) => { if(args.length == 3){ connection.connect; connection.query('INSERT INTO `users` VALUES ("' + args[1] + '", "' + args[2] + '", NOW(), "");', function(err, rows, fields) { if (err){ player.outputChatBox("Ошибка регистрации. Попробуйте снова"); throw err; } else{ player.outputChatBox("Учетная запись успешно создана!"); } }); connection.end(); } else player.outputChatBox("Используйте /registration [имя пользователя] [пароль] для регистрации"); } }; Конечно же в mysql уже должна быть создана БД и таблица users с полями login и password. Ну а при необходимости сможешь расширить ее, думаю теперь будет понятней. Вот как-то так реализовал я. Не гарантирую что это правильный подход, ведь сам тоже совсем недавно занялся программированием. Но тем не менее решил помочь)
  10. Found the solution! It is necessary to prescribe: connection.query("SET SESSION wait_timeout = 604800"); // 7 days timeout
  11. By the way, inside players.js, you've forgotten to add in the Admin column inside server_players DB.Handle.query("CREATE TABLE IF NOT EXISTS `server_players` (`ID` int(11) NOT NULL,`Name` varchar(24) NOT NULL,`Password` varchar(128) NOT NULL, `Admin` int(3) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;", function() { } ); Line 43, I haven't tried it but that should probably fix it.
  12. I have big problem with my mysql connection var mysql = require("mysql"); console.log("step 1"); var connection = mysql.createConnection({ host : "127.0.0.1", user : "root", password : "", database : "gtav" }); console.log("step 2"); connection.connect(function(e) { console.log("step 3"); if (e) { console.log("<b>DATABASE:</b> Wystąpił problem z połączeniem"); throw e; } else { console.log("<b>DATABASE:</b> Połączono z bazą danych"); } }); console.log("step 4"); connection.query("SELECT uuid FROM sq_accounts WHERE uuid=1", function (e, result) { console.log(result); console.log("step 4"); }); console.log("step 5"); Console print steps 1, 2, 4 and 5, soo connection.connect not work but i don't know why :v
  13. После регистрации, пытаюсь залогиниться, пишет ошибку в консоли и в игре(keker\commands\reg.js:782: Uncaught Error: Cannot enqueue Query after invoking quit.)
  14. code style : https://learn.javascript.ru/coding-style по ссылке советы по оформлению кода, отступы, оформление фигурных скобок, название переменных функций там однако предлагают два пробела, но как по мне это на вкус извечный вопрос, что лучше - таб или 4 пробела конечно 4 пробела, пробел универсален, а вот таб может иметь разную ширину на разных платформах, в разных программах --- а не надо бороться, экранирование символов встроено по умолчанию в пакет 'mysq' синтаксис такой connection.query('SELECT name FROM Users WHERE id = ?', [id], callback) и id экранируется по дефолту но если надо самому строить запросы, то в помощь гугл с запросов "экранирование символов от SQL инъекций" ---- это конечно экономия на спичках, но тебе не обязательно высчитывать length у результата, достаточно простое условие if (rows) ...
  15. Декораторы скоро войдут в спецификацию языка, это чудесный и очень гибкий инструмент, позволяющий умело внедрять мета программирование; изменять поведение функции; валидировать ваши данные; элегантный код; и многое другое... Всецело, рай для программиста! Но пока, мы можем их использовать без нативных операторов, благодаря функциям высшего порядка. Данный урок содержит в основном пересказ из оригинальной статьи на ресурсе learn javascript, по названию "Декораторы". Данный урок предполагает наличие неплохих знаний в программировании, в javascript. Итак, к коду! Внимание! Версия без комментариев, http://pastebin.com/JZNgHwdY ## метод afterLogin все так находится внутри метода login, фиксану чуть позднее, вся проблема в асинхронности /* Цель - Не допускать юзеров, которые находятся в черном списке */ /* Паттерн декораторы, подробнее - https://learn.javascript.ru/decorators */ /* Имеем обычный метод логина пользователя, куда передаются два параметра - логин и пароль соответственно. Однако, мы захотели навесить на метод login событие, чтобы при login у нас проверялся (условно) IP адрес из черного списка и если все впорядке, проводить логин. Самый очевидный вариант это просто дополнить метод login проверкой вида if ( User.blackList.indexOf( player.ip ) >= 0 ) return false; Однако, предположим что наш класс может быть унаследован и метод login перезаписан по своему или даже нам банально нужно вести какую нибудь статистику под авторизацию пользователя, и записывать попытки входа Не вопрос! Скажем мы, можно все пихнуть в метод login, он правда расбухнет и станет очень не читабельным, однако это реализация вполне годная на жизнь Но опять же, к нашим проблемам, -- метод могут переопределить, а поведение мы все таки хотим оставить так как же быть? На помощь приходят Декораторы! Суть декораторов проста -- мы подмешиваем в исходную функцию новое поведение, мы вольны задавать новое поведение как угодно! Давайте попробуем... Для начала реализация метода декоратора, метод bind Все просто -- метод bind всего лишь возвращает новую функицю и все! Все просто! (Немного теории: в функциональщине когда функция возвращает другую функцию, такая функция называется функцией высшего порядка) */ let mysql = require('mysql') // подключаем либу mysql, npm install mysql , SHA256 = require('crypto-js/sha256') // подключаем либу криптографии, можно стянуть npm install crypto , config = require('./config') // подключаем условный конфиг config.js, который якобы лежит у нас в корне каталога и возвращает объект { config: { } } , connection = mysql.createConnection(config.db) // создаем коннект к бд // описываем класс class User { constructor() { // по дефолту ставим статус авторизации как false this.logged = false // по дефолту ставим попытки входа на 0 this.loginAttempts = 0 // а максимальное количество попыток ставим равное 3 this.maxLoginAttempts = 3 // здесь навешиваем события, соответственно до и после this.login = this.bind (this.login, this.onBeforeLogin, this.onAfterLogin) } // собственно здесь вся магия, мы переиначиваем поведение func так как нам // захочется, добавляя до и после вызов событий // причем, заметьте что afterFunc передается в качестве параметра, ведь // node.js асинхронный, а значит мы должны подождать конца запроса // прежде чем использовать событие после авторизации bind (func, beforeFunc, afterFunc) { return function() { // здесь важно указать именно function() а не () => { }, // так как () => { } не имеет своего arguments и this // валидируем, может ли пользователь приступить к авторизации // параметр this обозначает наш экземпляр класса User let canLogin = beforeFunc.call(this, arguments) // func.call вызывает функцию func с параметрами arguments, afterFunc и передает туда // наш экземпляр объекта User // если canLogin = true, то совершаем попытку входа, иначе возвращаем ничего return canLogin ? func.call(this, arguments, afterFunc) : null } } // условный черный список static get blackList() { return ['127.0.0.1']; } login (player, username, password, callback) { if (this.logged) return true // условный запрос к базе данных connection.query('SELECT * FROM users WHERE username = ?, password = ?',[ username.toString(), SHA256(password.toString()), // хэшируем пароль ], function(err, result) { if (!err) { // ошибок нет, все окей // Запись с такой парой найдена? if (result.length) { this.logged = true return callback(username, this.logged, this.loginAttempts) } else { return callback(username, this.logged, ++this.loginAttempts) } } else { debug(`User::login, ошибка запроса к БД, причина: ${err}`) } }) } // сюда ушли все те же самые параметры что и в login // (т.е. player, username, password, без callback, его мы подключаем позже) // однако здесь их явно не указываем за не надобностью beforeLogin (player) { return this.loginAttempts > this.maxLoginAttempts || User.blackList.indexOf(player.ip) >= 0 ? false : true } afterLogin (username, status, count) { if (status) { // Пишем в какой-нибудь условный дебаг debug(`Пользовател ${username} авторизовался! ${count ? 'Его количество попыток входа = ' + count : ''}`) this.loginAttempts = 0 } else { // Пишем в какой-нибудь условный дебаг debug(`Ошибка авторизации. Количество попыток входа с логином ${username} = ${count.toString()}`) } return status } } статья дорабатывается... вопросы, пожелания, критика
  16. Очень часто люди задают вопрос, вроде: "как установить пакеты node.js для сервера?". В данной статье попытаюсь доходчиво объяснить как это сделать. Качаем, устанавливаем node.js, желательно версию 7.3.0, т.к. на сервер стоит именно она. Жмем пуск, открываем командную строку (Win + R, cmd). Переходим в папку с сервером (в моем случае это D:\rage_mp_server). Выглядит как-то так (текст из cmd): D: cd rage_mp_server Инициализируем npm package.json файл: npm init -y Устанавливаем необходимые нам пакеты (mysql к примеру): npm install mysql Далее можем делать require в интересующем нас .js файле (на примере index.js): var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret', database : 'my_db' }); connection.connect(); connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) { if (err) throw err; console.log('The solution is: ', rows[0].solution); }); connection.end();