ddoommbbaass

Как сделать авторизацию и регистрацию в игре? (MYSQL)

Recommended Posts

Добрый день.

Я начинающий скриптер.

Как реализовать авторизацию и Регистрацию в игре через MYSQL?

прошу дать пошаговую инструкцию. Благодарю.

Share this post


Link to post
Share on other sites
Leone    5

с начала javaScript, далее сам Mysql нужно изучить тебе, потом wiki rage. (которой пока не совсем готов.)

Перейди сюда

 

ps: слово "скриптер" здесь не уместна, тут программисты...  

Edited by Leone
  • Like 2

Share this post


Link to post
Share on other sites
6 минут назад, Leone сказал:

с начала javaScript, далее сам Mysql нужно изучить тебе, потом wiki rage. (которой пока не совсем готов.)

Перейди сюда

 

ps: слово "скриптер" здесь не уместна, тут программисты...  

Благодарю!

Share this post


Link to post
Share on other sites
ZDiels    3
В 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 by ZDiels

Share this post


Link to post
Share on other sites
ZDiels    3
24 минуты назад, ddoommbbaass сказал:

Благодарю, сейчас попробую

 

Прошу прощения, допустил неточность в части регистрации. Там необходимо использовать запрос 

INSERT INTO `users` VALUES ("' + args[1] + '", "' + args[2] + '");

Просто у меня в таблице имеются дополнительные поля, типа даты регистрации.

Share this post


Link to post
Share on other sites
28 минут назад, ZDiels сказал:

 

Сделал как сказали, создал БД и т.д. в нем создал таблицу users и структуру в users добавил login и password с типами TEXT,

добавил данные в базу, в игре ввел эти данные и все успешно. Но вместо текста треугольники, возможно кодировка не та, но спасибо за ответ!

Share this post


Link to post
Share on other sites
ZDiels    3
3 минуты назад, ddoommbbaass сказал:

Сделал как сказали, создал БД и т.д. в нем создал таблицу users и структуру в users добавил login и password с типами TEXT,

добавил данные в базу, в игре ввел эти данные и все успешно. Но вместо текста треугольники, возможно кодировка не та, но спасибо за ответ!

На самом деле для данных полей лучше использовать тип varchar с ограничением длинны, скажем, в 20 символов. Что касается неверных символов, тут причина может быть во многом. Но я бы рекомендовал вам попробовать перевести файл скрипта в кодировку UTF-8.

Share this post


Link to post
Share on other sites
Только что, 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.

 

Share this post


Link to post
Share on other sites
ZDiels    3
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. Игра закрывается, скорее всего, из-за недостатка памяти.

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.