Jump to content

Daniel Clark

Members
  • Posts

    11
  • Joined

  • Last visited

Posts posted by Daniel Clark

  1.  

     Hello! 

    I tried to connect to the DB, but the server threw an error.

    CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
           -> MySQL/MySQL.cs:37

    When i add a reference I get it:

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Option not supported.
    Parameter name: db
       at MySql.Data.MySqlClient.MySqlBaseConnectionStringBuilder.GetOption(String key)
       at MySql.Data.MySqlClient.MySqlConnectionStringBuilder.set_Item(String keyword, Object value)
       at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
       at MySql.Data.MySqlClient.MySqlBaseConnectionStringBuilder..ctor(String connStr, Boolean isXProtocol)
       at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)
       at MySQL.MySQL.StartConnection() in MySQL/MySQL.cs:line 35
       at VesRP.Setts() in VesRP.cs:line 11
       --- End of inner exception stack trace ---
       at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       at GTANetworkInternals.ScriptingEngine.InvokeVoidMethod(String method, Object[] args)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at GTANetworkInternals.EventHandler.ParseEx(Event _event, ScriptingEngine engine, Object[] arguments)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at GTANetworkInternals.GameServer.StartResource(String resourceName, String parent)

     

    MySQL connection code:

    String SQLConnection = $"SERVER={sql.Host};PASSWORD={sql.Pass};UID={sql.User};DATABASE={sql.DB};";
    conn = new MySqlConnection(SQLConnection);
    try
    {
      conn.Open();
      NAPI.Util.ConsoleOutput("Connected!");
    }
    catch(Exception ex)
    {
      NAPI.Util.ConsoleOutput("Error:"+ex.ToString());
    }

     

  2. Hello! 

    I tried to connect to the DB, but the server threw an error.

    CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
           -> MySQL/MySQL.cs:37

    When i add a reference I get it:

    System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: Option not supported.
    Parameter name: db
       at MySql.Data.MySqlClient.MySqlBaseConnectionStringBuilder.GetOption(String key)
       at MySql.Data.MySqlClient.MySqlConnectionStringBuilder.set_Item(String keyword, Object value)
       at System.Data.Common.DbConnectionStringBuilder.set_ConnectionString(String value)
       at MySql.Data.MySqlClient.MySqlBaseConnectionStringBuilder..ctor(String connStr, Boolean isXProtocol)
       at MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)
       at MySQL.MySQL.StartConnection() in MySQL/MySQL.cs:line 35
       at VesRP.Setts() in VesRP.cs:line 11
       --- End of inner exception stack trace ---
       at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       at GTANetworkInternals.ScriptingEngine.InvokeVoidMethod(String method, Object[] args)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at GTANetworkInternals.EventHandler.ParseEx(Event _event, ScriptingEngine engine, Object[] arguments)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at GTANetworkInternals.GameServer.StartResource(String resourceName, String parent)

     

    MySQL connection code:

    String SQLConnection = $"SERVER={sql.Host};PASSWORD={sql.Pass};UID={sql.User};DATABASE={sql.DB};";
    conn = new MySqlConnection(SQLConnection);
    try
    {
      conn.Open();
      NAPI.Util.ConsoleOutput("Connected!");
    }
    catch(Exception ex)
    {
      NAPI.Util.ConsoleOutput("Error:"+ex.ToString());
    }

     

  3. В 06.06.2017 в 18:03, Bryan_King сказал:

    Нужна помощь! Установил RAGE MP, все норм заходит. Захожу в Settings... Ввожу ник Bryan_King и адресс D:\Grand Theft Auto V . Захожу в Server выбираю сервер нажимаю закрывается окно и больше нечего не происходит. Захожу еще раз смотрю в Settings, адресс и ник не сохранился. Что делать?!

    попробуй запускать гта в режиме администратора

  4. В 31.05.2017 в 17:17, kemperrr сказал:

    На скриншоте эта меню вызывается нативными функциями, в рейдже тоже можно вызвать, но только зачем если есть CEF?

    а можете подсказать, что это за функции?

  5. В 19.01.2017 в 12:32, ZDiels сказал:

    Привет! Для начала тебе необходимо установить 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. Ну а при необходимости сможешь расширить ее, думаю теперь будет понятней.

    Вот как-то так реализовал я. Не гарантирую что это правильный подход, ведь сам тоже совсем недавно занялся программированием. Но тем не менее решил помочь)

    После регистрации, пытаюсь залогиниться, пишет ошибку в консоли и в игре(keker\commands\reg.js:782: Uncaught Error: Cannot enqueue Query after invoking quit.)

×
×
  • Create New...