Обновляем плагин MySQL с версии R33+ до R41-4

NozmaD

Администратор
Команда форума
Администратор
Сообщения
164
Баллы
208
В этом небольшом мануале вы узнаете о всех изменениях функций плагина MySQL от BlueG до версии R41-4, а так же как исправить их в вашем моде. Дополнительно, для небольшой автоматизации процесса, представлены Regex выражения, что бы быстро заменить старые строки кода на новые. Все регулярные выражения протестированы в Notepad++, однако настоятельно рекомендую сохранить свой скрипт, использующий этот плагин. И ещё, всегда проверяйте все изменения, сделанные регулярными выражениями.

1. Новый тег для переменной, в которой хранятся данные о подключении.
Было:
C++:
new g_SQL;

public OnGameModeInit()
{
    g_SQL = mysql_connect(/* credentials */);
}
Стало:
C++:
new MySQL:g_SQL;

public OnGameModeInit()
{
    g_SQL = mysql_connect(/* credentials */);
}
Просто добавьте MySQL: перед вашей глобальной переменной MySQL.


2. Удаленны префиксы у фраз уровня логирования:
Было:
C++:
mysql_log(LOG_ERROR | LOG_DEBUG);
Стало:
C++:
mysql_log(ERROR | DEBUG);
Просто удалите часть «LOG_» перед любым уровнем журнала


3. Параметр соединения перенесен в последнюю позицию в mysql_escape_string, mysql_stat и mysql_get_charset:
Было:
C++:
mysql_get_charset(destination, g_SQL, sizeof(destination));
Стало:
C++:
mysql_get_charset(destination, sizeof(destination), g_SQL);
Переместите глобальную переменную дескриптора MySQL на место последнего параметра.
Найти:
Код:
(mysql_escape_string|mysql_stat|mysql_get_charset)\((.+?), ?g_SQL(.*?)\);
Заменить на:
Код:
\1\(\2\3, g_SQL\);


4. Параметры "пароль" и "имя базы данных" поменялись местами в функции mysql_connect:
Было:
C++:
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, MYSQL_PASSWORD);
Стало:
C++:
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
Как говорится в названии, просто просто поменяйте местами два последних параметра у функции.


5. Все параметры подключения в mysql_connect переместились в собственную небольшую систему:
Было:
C++:
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, .autoreconnect = false, .pool_size = 0);
Стало:
C++:
new MySQLOpt:options = mysql_init_options();
mysql_set_option(options, AUTO_RECONNECT, false);
mysql_set_option(options, POOL_SIZE, 0);
mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE, options);
Теперь вам нужно создать дополнительный экземпляр вариантов подключения MySQL, установить необходимые параметры и передать его в mysql_connect.


6. Функция mysql_option переименован в mysql_global_options:
Было:
C++:
mysql_option(DUPLICATE_CONNECTIONS, true);
Стало:
C++:
mysql_global_options(DUPLICATE_CONNECTIONS, true);
Просто выполните поиск и замену. (CTRL + H в Notepad++)


7. Параметр типа логирования в mysql_log удален:
Было:
C++:
mysql_log(ALL, LOG_TYPE_HTML);
Стало:
C++:
mysql_log(ALL);

8. Функция mysql_reconnect удалена:
Было:
C++:
mysql_reconnect(g_SQL);
Стало:
C++:
mysql_close(g_SQL);
g_SQL = mysql_connect(/* credentials */);

9. Функция mysql_current_handle удалена:
Да. Просто удалена. Никакой замены нету.


10. Параметр дескриптора соединения из всех функций кеширования удален:
Было:
C++:
cache_get_row(0, 0, g_SQL);
Стало:
C++:
cache_get_row(0, 0);
То же самое сделано для каждой другой кеш функции (_int , _float).
Найти: (Замените g_SQL в регулярном выражении на вашу глобальную переменную MySQL)
Код:
(cache_.+?\(.+?), ?g_SQL\);
Заменить на:
Код:
\1\);


11. Функция cache_get_row переименована в cache_get_value_index:
Было:
C++:
cache_get_row(0, 0, dest);
new value = cache_get_row_int(0, 1);
Стало:
C++:
cache_get_value_index(0, 0, dest);
new value = cache_get_value_index_int(0, 1);
Просто выполните поиск и замену. (CTRL + H в Notepad++)


12. Функция cache_get_field_content переименована в cache_get_value_name:
Было:
C++:
cache_get_field_content(0, "string", dest);
new value = cache_get_field_content_int(0, "integer");
Стало:
C++:
cache_get_value_name(0, "string", dest);
new value = cache_get_value_name(0, "integer");
Просто выполните поиск и замену. (CTRL + H в Notepad++)


13. Все cache_get_ функции теперь возвращают свое значение через ссылочный параметр, а не напрямую:
Было:
C++:
new bool:value = cache_get_value_index_bool(0, 2);
new row_count = cache_get_row_count();
Стало:
C++:
new bool:value; cache_get_value_index_bool(0, 2, value);
new row_count; cache_get_row_count(row_count);
Все cache_get_ функции, теперь возвращают данные через ссылочный параметр. Напрямую они теперь возвращают код состояния, указывающий, успешно ли выполнена функция или нет.
Найти:
Код:
(.+?) ?= ?(cache_get_value_.+?\(.*?)\);
Заменить на:
Код:
\2, \1\);


14. cache_set_active(Cache:0) больше не отключает активный кеш:
Было:
C++:
cache_set_active(Cache:0);
Стало:
C++:
cache_unset_active();

15. Функция cache_get_data удалена (используйте `cache_get _ * _ count`):
Было:
C++:
new rows, fields;
cache_get_data(rows, fields);
Стало:
C++:
new rows, fields;
cache_get_row_count(rows);
cache_get_field_count(fields);

16. Параметр "clearvars" в orm_delete удален:
Было:
C++:
orm_delete(orm_id);
Стало:
C++:
orm_delete(orm_id);
orm_clear_vars(orm_id);
 
Автор темы Название темы Категория Ответов Дата темы
NozmaD MySQL c системой пользователей - Подробное руководство Мануалы и уроки 0
Верх