Jump to content

ZDiels

Members
  • Posts

    10
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by ZDiels

  1. Спасибо большое за пояснение. Рекомендации по оформлению кода обязательно приму к сведению, и буду стараться им следовать. Про плейсхолдеры уже узнал, оказалось ничего сложного в этом нет.
  2. Привет. Спасибо большое за критику, хоть она была и не совсем адекватна в плане формулирования. Мне почему-то показалась, что вы данным сообщением пытались показать свое превосходство над начинающим, что совсем не сложно. С 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("Неверный логин или пароль"); } Отступы выполнены обычной табуляцией. Не понимаю, почему вы решили к ним придраться. Аргументируйте.
  3. Похоже что в моем примере я зря постоянно завершал соединение. Нужно везде убрать connection.end();
  4. По всей видимости я не учел, что необходимо очищать результат после запроса, или что-то подобное. К сожалению сейчас не могу подсказать как решить данную проблему. Может кто-то другой сможет помочь. И скорее всего это ошибка не из-за того, что вы нажимаете ALT+TAB. Игра закрывается, скорее всего, из-за недостатка памяти.
  5. На самом деле для данных полей лучше использовать тип varchar с ограничением длинны, скажем, в 20 символов. Что касается неверных символов, тут причина может быть во многом. Но я бы рекомендовал вам попробовать перевести файл скрипта в кодировку UTF-8.
  6. Прошу прощения, допустил неточность в части регистрации. Там необходимо использовать запрос INSERT INTO `users` VALUES ("' + args[1] + '", "' + args[2] + '"); Просто у меня в таблице имеются дополнительные поля, типа даты регистрации.
  7. Привет! Для начала тебе необходимо установить 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. Ну а при необходимости сможешь расширить ее, думаю теперь будет понятней. Вот как-то так реализовал я. Не гарантирую что это правильный подход, ведь сам тоже совсем недавно занялся программированием. Но тем не менее решил помочь)
  8. Спасибо огромное за развернутый ответ! Интересно, есть ли на данный момент возможность дублирования интерьеров или использования других методов для реализации чего-то типа системы жилищ игроков. Хотя дублирование мне кажется немного глупой затеей. По моим наблюдением, R* в GTA:O реализовали систему апартаментов иным образом. Они как бы создают дополнительную сцену, и перемещают в нее игрока. Таким образом владельцы одних и тех же апартаментов не пересекаются между собой. Хотя я могу и ошибаться.
  9. Кажется вы меня не совсем поняли. Я имел ввиду хеши, которые приведены в файле hashes.js. Типа "SET_PLAYER_WANTED_LEVEL"
  10. Здравствуйте. Решил попробовать себя в роли разработчика сервера. Делаю это впервые, поэтому появились некоторые вопросы. А именно: 1. Хеши. Для чего они нужны? Как с ними работать? Я так понимаю это какие-то функции сомой GTA. Было бы неплохо увидеть пример. 2. Можно ли использовать внутриигровые UI, например как меню кастомизации персонажа в оригинальной GTA:O, или в сингле, использующиеся например различными трейнерами и модификациями. Надеюсь вы поняли. Или поддерживается только HTML? Так же хотелось бы изучить пример. 3. Ну и наконец вопрос про использование интерьеров. Интересно каким образом игрока можно переместить в определенный интерьер. И где возможно узнать их список. Надеюсь мои вопросы оказались не очень утруждающими и на них все же найдутся ответы. Большое спасибо!
×
×
  • Create New...