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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Бл.. разобрался кое как с вариантом от DeimoS, всё робит вроде.

    $continue$, У ваших вариантов с DeimoS есть плюсы и минусы какие нибудь ну в разнице кодов?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    У Дуймоса, используется mxini (include), а я хотел воспользоваться нативной функции из плагина BlueG (mysql_connect_file) - там используется fstream из STL C++. Вызов native не во всех случаях быстрей, чем код написанный на Pawn. Возможно у Дуймоса - есть выигрыш в скорости, возможно нет. (не хочется тестировать. Это во первых - компиляция плагина [т.к, у нас же нет в release - mysql_file_connect], во вторых составления профайлера)

    + У меня идет экономия памяти, благодаря упаковки строки.

    Приведу пример (когда mxini подтягивать ради config.ini, не менее чем глупо):
    Я почти не работал с файлами. Умею. Но не работаю. Мне они кажутся не удобными. Мне нужно сделать подключение из файла к базе данных. У меня есть выбор либо использовать file.inc, либо подтянуть mxini. (я бы конечно, выбрал file.inc. А то это как купить оптически прицел за 10000$ и начать стрелять по воробьям. Так же и с mxini) И это ради одного файла конфигурации?
    Я бы лучше вызвал функцию из плагина BlueG - чем стал использовать file.inc/mxini


    P.S: Хотя, о чем это я в mxini тоже же вызываются native function.
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Бл.. разобрался кое как с вариантом от DeimoS, всё робит вроде.

    $continue$, У ваших вариантов с DeimoS есть плюсы и минусы какие нибудь ну в разнице кодов?
    Последний раз редактировалось $continue$; 27.02.2016 в 04:01.
    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. Пользователь сказал cпасибо:
    vovandolg (27.02.2016)
  4. #33
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    + У меня идет экономия памяти, благодаря упаковки строки.

    Приведу пример (когда mxini подтягивать ради config.ini, не менее чем глупо):
    Я почти не работал с файлами. Умею. Но не работаю. Мне они кажутся не удобными. Мне нужно сделать подключение из файла к базе данных. У меня есть выбор либо использовать file.inc, либо подтянуть mxini. (я бы конечно, выбрал file.inc. А то это как купить оптически прицел за 10000$ и начать стрелять по воробьям. Так же и с mxini) И это ради одного файла конфигурации?
    Я бы лучше вызвал функцию из плагина BlueG - чем стал использовать file.inc/mxini


    P.S: Хотя, о чем это я в mxini тоже же вызываются native function.
    Если ты прочтёшь вопрос из шапки темы, то поймёшь, что данные для MySQL - это лишь часть тех задач, которые наложены на файл с конфигами (точнее, это просто пример того, как реализовывается запись/вывод данных). В идеале в эти конфиги можно будет записывать кучу разной информации: от настройки MAX_PLAYERS (придётся преобразовать макрос в переменную, но не суть) и до какой-то внутреигровой настройки, типа цен на авто или же какое-то редактируемое прямо из игры сообщение-реклама для всего сервера, которое будет показываться по таймеру. В общем, тут всё ограничивается только твоим желанием и mxINI тебе поможет в реализации всего этого.

    И да, ты, видимо, не в курсе, что тебе, по-сути, пришлось бы написать свой mxINI, если бы ты захотел нормально работать с file.inc. Ибо, например, та же функция fread возвращает строку полностью, в том числе и с "\n", пробелами и прочим, что придётся убирать вручную, дабы тот же mySQL смог нормально прочесть эти данные
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

  5. #34
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    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
        
    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. Файл будет выглядеть так:

    Если файла нет, сервер сам его создаст и запишет в него значения из макросов, в которых указаны значения по умолчанию.
    В этом коде вот тут
    PHP код:
    #if defined mysql_config__OnGameModeInit
        
    mysql_config__OnGameModeInit();
    #endif 
    Ошибочка. Должно быть так
    PHP код:
    #if defined mysql_config__OnGameModeInit
        
    return mysql_config__OnGameModeInit();
    #endif 
    Исправил тот пост
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,369
    Репутация:
    113 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    В этом коде вот тут
    PHP код:
    #if defined mysql_config__OnGameModeInit
        
    mysql_config__OnGameModeInit();
    #endif 
    Ошибочка. Должно быть так
    PHP код:
    #if defined mysql_config__OnGameModeInit
        
    return mysql_config__OnGameModeInit();
    #endif 
    Исправил тот пост
    Какая ошибка может вылезти если не поставить возврат?
    Последний раз редактировалось vovandolg; 02.03.2016 в 20:10.
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  7. #36
    Аватар для DeimoS
    Модератор?

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

    Можно было и так сделать:
    PHP код:
    #if defined mysql_config__OnGameModeInit
        
    mysql_config__OnGameModeInit();
    #endif
        
    return 1;

    не принципиально
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

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

    Steve Pavlina

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

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Если все таки нужно в приципе могу скомпилировать плагины под Windows и Linux в субботу.
    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

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

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

 

 
Страница 4 из 4 ПерваяПервая ... 2 3 4

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

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

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

Ваши права

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