Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя
Показано с 21 по 30 из 38
  1. #21
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Вопрос ещё, вот к примеру
    PHP код:
    #define    DATABASE__DEFAULT_HOST        "localhost" 
    хост можно же указать без файла вот тут или обязательно ковырять всё переделывать чтобы с инклуда читалось?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  2. #22
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    PHP код:
    #define    USE_MYSQL_CONFIG_FILE//Включение работы с файлом (если закомментировать, данные будут сразу браться из макросов)
    //Значения по умолчанию
    #define    DATABASE__DEFAULT_HOST        "localhost"
    #define    DATABASE__DEFAULT_USER        "root"
    #define    DATABASE__DEFAULT_NAME        "sa-mp"
    #define    DATABASE__DEFAULT_PASSWORD    ""


    #if !defined USE_MYSQL_CONFIG_FILE

    new const database_host[] = DATABASE__DEFAULT_HOST;
    new const 
    database_user[] = DATABASE__DEFAULT_USER;
    new const 
    database_name[] = DATABASE__DEFAULT_NAME;
    new const 
    database_pass[] = DATABASE__DEFAULT_PASSWORD;

    #else // !defined USE_MYSQL_CONFIG_FILE

    #define DATABASE_CONFIG_FILE_NAME            "dbconf.txt"//Имя файла, в котором будут хранится данные
    #define DB_CONFIG_FIELD_HOST_NAME            "Host"//Имя строки, в которой будет хранится адрес хостинга
    #define DB_CONFIG_FIELD_USER_NAME            "User"//Имя строки, в которой будет имя пользователя
    #define DB_CONFIG_FIELD_DB_NAME                "Database"//Имя строки, в которой будет хранится имя БД
    #define DB_CONFIG_FIELD_PASS_NAME            "Password"//Имя строки, в которой будет хранится пароль от БД
    new database_host[64] = DATABASE__DEFAULT_HOST;
    new 
    database_user[16] = DATABASE__DEFAULT_USER;
    new 
    database_name[32] = DATABASE__DEFAULT_NAME;
    new 
    database_pass[32] = DATABASE__DEFAULT_PASSWORD;

    public 
    OnGameModeInit()
    {
        new 
    config_file_handle ini_openFile(DATABASE_CONFIG_FILE_NAME);
        if (
    config_file_handle == -1)
        {
            
    printf("Warning: Не удалось открыть файл \"%s\"! Применение параметров по умолчанию ..."DATABASE_CONFIG_FILE_NAME);
            
    config_file_handle ini_createFile (DATABASE_CONFIG_FILE_NAME);
            if (
    config_file_handle >= 0)
            {
                
    ini_setString (config_file_handleDB_CONFIG_FIELD_HOST_NAMEdatabase_host);
                
    ini_setString (config_file_handleDB_CONFIG_FIELD_USER_NAMEdatabase_user);
                
    ini_setString (config_file_handleDB_CONFIG_FIELD_DB_NAMEdatabase_name);
                
    ini_setString (config_file_handleDB_CONFIG_FIELD_PASS_NAMEdatabase_pass);
                
    printf("Файл \"%s\" успешно создан."DATABASE_CONFIG_FILE_NAME);
            }
            else 
    printf("Не удалось создать файл \"%s\". Код ошибки: %d"DATABASE_CONFIG_FILE_NAMEconfig_file_handle);
        }
        else
        {
            static const 
    read_warning_str[] =
                
    "Warning: Длина строки %s превышает лимит в %d символов.";
            new 
    read_error;
            if (
    ini_getString(config_file_handle"host"database_host) > sizeof(database_host) - 1)
                
    printf(read_warning_strDB_CONFIG_FIELD_HOST_NAMEsizeof(database_host) - 1), read_error 1;
            if (
    ini_getString(config_file_handle"user"database_user) > sizeof(database_user) - 1)
                
    printf(read_warning_strDB_CONFIG_FIELD_USER_NAMEsizeof(database_user) - 1), read_error 1;
            if (
    ini_getString(config_file_handle"user"database_name) > sizeof(database_name) - 1)
                
    printf(read_warning_strDB_CONFIG_FIELD_DB_NAMEsizeof(database_name) - 1), read_error 1;
            if (
    ini_getString(config_file_handle"user"database_pass) > sizeof(database_pass) - 1)
                
    printf(read_warning_strDB_CONFIG_FIELD_PASS_NAMEsizeof(database_pass) - 1), read_error 1;
            if(!
    read_errorprintf("Данные из \"%s\" успешно загружены"DATABASE_CONFIG_FILE_NAME);
        }
        
    ini_closeFile(config_file_handle);
    #if defined mysql_config__OnGameModeInit
        
    return mysql_config__OnGameModeInit();
    #endif
    }

    #if defined _ALS_OnGameModeInit
        #undef OnGameModeInit
    #else
        #define _ALS_OnGameModeInit
    #endif
    forward mysql_config__OnGameModeInit();
    #define OnGameModeInit mysql_config__OnGameModeInit

    #endif // !defined USE_MYSQL_CONFIG_FILE 
    Вот вариант для mxINI. Файл будет выглядеть так:

    Если файла нет, сервер сам его создаст и запишет в него значения из макросов, в которых указаны значения по умолчанию.
    Последний раз редактировалось DeimoS; 29.02.2016 в 09:08.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #23
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Кстати, говоря - велосипеды изобритаете.
    Можно воспользоваться, готовой, накатыной лыжней.

    тыч, тыч, тыч, тыщ по ссылке
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #24
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Вопрос ещё, вот к примеру
    PHP код:
    #define    DATABASE__DEFAULT_HOST        "localhost" 
    хост можно же указать без файла вот тут или обязательно ковырять всё переделывать чтобы с инклуда читалось?
    Сейчас хост читается из файла. Ты как хочешь сделать?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. #25
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Он читается из текстового файла, а если допустим в этом же инклуде замутить?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  6. #26
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Он читается из текстового файла, а если допустим в этом же инклуде замутить?
    Ну убери всё, что касается чтения данных о хосте из файла и будет тебе счастье
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #27
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Меня - так понимаю, никто не хочет услышать:
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Кстати, говоря - велосипеды изобритаете.
    Можно воспользоваться, готовой, накатыной лыжней.

    тыч, тыч, тыч, тыщ по ссылке
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  8. Пользователь сказал cпасибо:
    vovandolg (27.02.2016)
  9. #28
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Меня - так понимаю, никто не хочет услышать:
    Как ты видишь, твоя лыжа не подойдёт vovandolg. Все тебя услышали
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  10. #29
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Почитаю потом о других лыжах, может и пригодится куда)

    - - - Добавлено - - -

    Попытал вариант с mxINI:
    PHP код:
    [00:20:42] [ERRORCMySQLConnection::Connect - (error #1045) Access denied for user 'тут_название_бд'@'localhost' (using password: YES)
    [00:20:42] [ERRORCMySQLConnection::Connect - (error #1045) Access denied for user 'тут_название_бд'@'localhost' (using password: YES)
    [00:21:38] [ERRORCMySQLQuery::Execute[OnPlayerRegCheck(d)] - (error #2006) MySQL server has gone away
    [00:21:38] [WARNINGCMySQLQuery::Execute[OnPlayerRegCheck(d)] - lost connectionreconnecting..
    [
    00:21:38] [ERRORCMySQLConnection::Connect - (error #1045) Access denied for user 'тут_название_бд'@'localhost' (using password: YES)
    [00:21:45] [ERRORCMySQLQuery::Execute[()] - (error #2006) MySQL server has gone away
    [00:21:45] [WARNINGCMySQLQuery::Execute[()] - lost connectionreconnecting..
    [
    00:21:45] [ERRORCMySQLConnection::Connect - (error #1045) Access denied for user 'тут_название_бд'@'localhost' (using password: YES) 
    PHP код:
    [00:20:42Данные из "dbconf.txt" успешно загружены
    [00:20:42Подключиться к базе не удалось 
    Забыл сказать если это важно юзаю mysql R34
    ____________________________________________

    Решил проблему, в не обратил внимание что в файле наименование значений от предыдущего варианта..
    Последний раз редактировалось vovandolg; 27.02.2016 в 03:34.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  11. #30
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Только, что начал писать систему, попробовал использовать mysql_connect_file, оказывается в сурсах на GitHub она есть, ещё, ещё, ещё ещё и ещё, а вот в скомпилированом плагине (release) - ее нет. Даже если прописать:
    PHP код:
    native MySQL:mysql_connect_file(const file_name[] = "mysql.ini"); 
    Сервер все равно будет возвращать ошибку о не задекларированной функции:
      Открыть/закрыть



    Интересно в чем профит было в сурсах оставить функцию но из release ее удалить? (Я отпишусь на GitHub - maddinat0r/BlueG)



    В итоге у меня вышло, что то такое: (не дописанный код, может быть все таки они скомпилируют плагин с данной функцией и тогда можно будет дописать систему. Ну или на крайний случаи можно собрать плагин самому)
    Глобально:
    PHP код:
    const SETTING_MYSQl_NOT_FILE 0;
    const 
    SETTING_MYSQL_FILE 1;

    static const 
    NAME_MYSQl_CONFIG[] = !"mysql.ini";
    static const 
    MYSQL_HOST[] = !"127.0.0.1";
    static const 
    MYSQL_USER[] = !"root";
    static const 
    MYSQL_DATABASE[] = !"database";
    static const 
    MYSQL_PASSW0RD[] = !"pass"
    Собственно, сама функция:
    PHP код:
    /*
        Если верить логам, то mysql_connect адекватно работает с запакованными строками:
        [02:06:00] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on '127.0.0.1' (10061)
    */
    ConfigMySQL(status_setting SETTING_MYSQl_NOT_FILE)
    {
        if(
    status_setting == SETTING_MYSQl_NOT_FILE)
        {
            static 
    host[(sizeof(MYSQL_HOST)) * (cellbits charbits) + 1];
            static 
    user[(sizeof(MYSQL_USER)) * (cellbits charbits)  + 1];
            static 
    database[(sizeof(MYSQL_DATABASE)) * (cellbits charbits) + 1];
            static 
    password[(sizeof(MYSQL_PASSW0RD)) * (cellbits charbits) + 1];
            
    strunpack(hostMYSQL_HOSTsizeof(host)); // дабы избежать багов в printf/format
            
    strunpack(userMYSQL_USERsizeof(user)); // дабы избежать багов в printf/format
            
    strunpack(databaseMYSQL_DATABASEsizeof(database)); // дабы избежать багов в printf/format
            
    strunpack(passwordMYSQL_PASSW0RDsizeof(password)); // дабы избежать багов в printf/format
            
    print(#Подключения к базе данных из стандартных настроек...);
            
    mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_DATABASEMYSQL_PASSW0RD);
            
    printf("Host: %s | User: %s | Database: %s | Password: %s"hostuserdatabasepassword);
        }
        else
        {
            
    // тут блок должен был заполнен работой с mysql_connect_file
        
    }

    Кому интересно - вопрос на GitHub'e
    Последний раз редактировалось $continue$; 27.02.2016 в 04:21.
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

 

 
Страница 3 из 4 ПерваяПервая 1 2 3 4 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •