ddoommbbaass Posted January 19, 2017 Share Posted January 19, 2017 Добрый день. Я начинающий скриптер. Как реализовать авторизацию и Регистрацию в игре через MYSQL? прошу дать пошаговую инструкцию. Благодарю. Link to comment Share on other sites More sharing options...
Leone Posted January 19, 2017 Share Posted January 19, 2017 (edited) с начала javaScript, далее сам Mysql нужно изучить тебе, потом wiki rage. (которой пока не совсем готов.) Перейди сюда ps: слово "скриптер" здесь не уместна, тут программисты... Edited January 19, 2017 by Leone 2 Link to comment Share on other sites More sharing options...
ddoommbbaass Posted January 19, 2017 Author Share Posted January 19, 2017 6 минут назад, Leone сказал: с начала javaScript, далее сам Mysql нужно изучить тебе, потом wiki rage. (которой пока не совсем готов.) Перейди сюда ps: слово "скриптер" здесь не уместна, тут программисты... Благодарю! Link to comment Share on other sites More sharing options...
ZDiels Posted January 19, 2017 Share Posted January 19, 2017 (edited) В 19.01.2017 в 17:56, ddoommbbaass сказал: Добрый день. Я начинающий скриптер. Как реализовать авторизацию и Регистрацию в игре через MYSQL? прошу дать пошаговую инструкцию. Благодарю. Привет! Для начала тебе необходимо установить 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. Ну а при необходимости сможешь расширить ее, думаю теперь будет понятней. Вот как-то так реализовал я. Не гарантирую что это правильный подход, ведь сам тоже совсем недавно занялся программированием. Но тем не менее решил помочь) Edited March 8, 2017 by ZDiels Link to comment Share on other sites More sharing options...
ddoommbbaass Posted January 19, 2017 Author Share Posted January 19, 2017 (edited) Благодарю, сейчас попробую Edited January 19, 2017 by ddoommbbaass - Link to comment Share on other sites More sharing options...
ZDiels Posted January 19, 2017 Share Posted January 19, 2017 24 минуты назад, ddoommbbaass сказал: Благодарю, сейчас попробую Прошу прощения, допустил неточность в части регистрации. Там необходимо использовать запрос INSERT INTO `users` VALUES ("' + args[1] + '", "' + args[2] + '"); Просто у меня в таблице имеются дополнительные поля, типа даты регистрации. Link to comment Share on other sites More sharing options...
ddoommbbaass Posted January 19, 2017 Author Share Posted January 19, 2017 28 минут назад, ZDiels сказал: Сделал как сказали, создал БД и т.д. в нем создал таблицу users и структуру в users добавил login и password с типами TEXT, добавил данные в базу, в игре ввел эти данные и все успешно. Но вместо текста треугольники, возможно кодировка не та, но спасибо за ответ! Link to comment Share on other sites More sharing options...
ZDiels Posted January 19, 2017 Share Posted January 19, 2017 3 минуты назад, ddoommbbaass сказал: Сделал как сказали, создал БД и т.д. в нем создал таблицу users и структуру в users добавил login и password с типами TEXT, добавил данные в базу, в игре ввел эти данные и все успешно. Но вместо текста треугольники, возможно кодировка не та, но спасибо за ответ! На самом деле для данных полей лучше использовать тип varchar с ограничением длинны, скажем, в 20 символов. Что касается неверных символов, тут причина может быть во многом. Но я бы рекомендовал вам попробовать перевести файл скрипта в кодировку UTF-8. Link to comment Share on other sites More sharing options...
ddoommbbaass Posted January 19, 2017 Author Share Posted January 19, 2017 Только что, ZDiels сказал: На самом деле для данных полей лучше использовать тип varchar с ограничением длинны, скажем, в 20 символов. Что касается неверных символов, тут причина может быть во многом. Но я бы рекомендовал вам попробовать перевести файл скрипта в кодировку UTF-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. Link to comment Share on other sites More sharing options...
ZDiels Posted January 19, 2017 Share Posted January 19, 2017 20 минут назад, ddoommbbaass сказал: Спасибо, всё работает, 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. По всей видимости я не учел, что необходимо очищать результат после запроса, или что-то подобное. К сожалению сейчас не могу подсказать как решить данную проблему. Может кто-то другой сможет помочь. И скорее всего это ошибка не из-за того, что вы нажимаете ALT+TAB. Игра закрывается, скорее всего, из-за недостатка памяти. 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