-
Posts
10 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Everything posted by ZDiels
-
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
Спасибо большое за пояснение. Рекомендации по оформлению кода обязательно приму к сведению, и буду стараться им следовать. Про плейсхолдеры уже узнал, оказалось ничего сложного в этом нет. -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
Привет. Спасибо большое за критику, хоть она была и не совсем адекватна в плане формулирования. Мне почему-то показалась, что вы данным сообщением пытались показать свое превосходство над начинающим, что совсем не сложно. С SQL инъекциями я знаком, но пока не знаю как с этим бороться. Точнее я предполагаю, что необходимо фильтровать параметры, но на данном этапе обучения не знаю как это можно реализовать. Что касается ошибки с условием, то да, этого не углядел. Решается данная проблема добавлением простого условия: if (err){ //если возникла ошибка player.outputChatBox("Ошибка входа. Попробуйте снова"); //выводим в чат сообщение об ошибке throw err; } else if(rows.length > 0){ //если данная запись существует console.log(rows[0].login, ' is login'); //выводим информацию о входе в консоль player.outputChatBox("Добро пожаловать, " + rows[0].login); //выводим информацию о входе в чат игрока } else{ player.outputChatBox("Неверный логин или пароль"); } Отступы выполнены обычной табуляцией. Не понимаю, почему вы решили к ним придраться. Аргументируйте. -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
Похоже что в моем примере я зря постоянно завершал соединение. Нужно везде убрать connection.end(); -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
По всей видимости я не учел, что необходимо очищать результат после запроса, или что-то подобное. К сожалению сейчас не могу подсказать как решить данную проблему. Может кто-то другой сможет помочь. И скорее всего это ошибка не из-за того, что вы нажимаете ALT+TAB. Игра закрывается, скорее всего, из-за недостатка памяти. -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
На самом деле для данных полей лучше использовать тип varchar с ограничением длинны, скажем, в 20 символов. Что касается неверных символов, тут причина может быть во многом. Но я бы рекомендовал вам попробовать перевести файл скрипта в кодировку UTF-8. -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
Прошу прощения, допустил неточность в части регистрации. Там необходимо использовать запрос INSERT INTO `users` VALUES ("' + args[1] + '", "' + args[2] + '"); Просто у меня в таблице имеются дополнительные поля, типа даты регистрации. -
Как сделать авторизацию и регистрацию в игре? (MYSQL)
ZDiels replied to ddoommbbaass's topic in Scripting
Привет! Для начала тебе необходимо установить 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. Ну а при необходимости сможешь расширить ее, думаю теперь будет понятней. Вот как-то так реализовал я. Не гарантирую что это правильный подход, ведь сам тоже совсем недавно занялся программированием. Но тем не менее решил помочь) -
Спасибо огромное за развернутый ответ! Интересно, есть ли на данный момент возможность дублирования интерьеров или использования других методов для реализации чего-то типа системы жилищ игроков. Хотя дублирование мне кажется немного глупой затеей. По моим наблюдением, R* в GTA:O реализовали систему апартаментов иным образом. Они как бы создают дополнительную сцену, и перемещают в нее игрока. Таким образом владельцы одних и тех же апартаментов не пересекаются между собой. Хотя я могу и ошибаться.
-
Кажется вы меня не совсем поняли. Я имел ввиду хеши, которые приведены в файле hashes.js. Типа "SET_PLAYER_WANTED_LEVEL"
-
Здравствуйте. Решил попробовать себя в роли разработчика сервера. Делаю это впервые, поэтому появились некоторые вопросы. А именно: 1. Хеши. Для чего они нужны? Как с ними работать? Я так понимаю это какие-то функции сомой GTA. Было бы неплохо увидеть пример. 2. Можно ли использовать внутриигровые UI, например как меню кастомизации персонажа в оригинальной GTA:O, или в сингле, использующиеся например различными трейнерами и модификациями. Надеюсь вы поняли. Или поддерживается только HTML? Так же хотелось бы изучить пример. 3. Ну и наконец вопрос про использование интерьеров. Интересно каким образом игрока можно переместить в определенный интерьер. И где возможно узнать их список. Надеюсь мои вопросы оказались не очень утруждающими и на них все же найдутся ответы. Большое спасибо!
