Всем доброго времени суток!
Начнем с того, что не так давно был обновлен плагин MySQL от BlueG до версии R7
Отличительной особенностью данного плагина стала стабильная поддержка потоков. Если кто знает, в R6(-2) частое создание потоков приводило к крешу сервера
Но R7 (в силу понятных причин) теперь не поддерживает непоточные скрипты. Это вызывает проблемы у скриптеров
В данном уроке я расскажу вам, как перевести скрипт на R7.
Если возникнут какие-то вопросы, пишите в данной теме, я по мере возможности буду отвечать
Начнем...
Для начала посмотрим какие функции и коллбеки были убраны в R7. Это mysql_query, mysql_fetch_int, mysql_fetch_float, OnQueryFinish.
Начнем с простого...
1. Допустим, есть код следующего вида:
Однако, как вы заметили, в R7 нет функции mysql_fetch_int(); тут и возникает проблема.
Приходится пользоваться добавленной в R7 функцией cache_get_field (если же у вас несколько строк, то - cache_get_row).
Как будет выглядеть код:
Если вам нужно получить значение типа float и записать в переменную, то вместо strval используйте floatstr
2. Ну и теперь к самим отправлениям запросов
R6-ый вид проверки зарегистрирован игрок или нет, выглядит так:
В R7 нам придется создавать коллбек и пихать в него то, что следует после запроса. Все это выполнится в отедльном потоке и никак не повлияет на работоспособность сервера
Вот так будет выглядеть:
Если у вас код, который надо пихать в коллбек в версии R6 был в коллбеке OnQueryFinish (его убрали), то удаляем из OnQueryFinish и вставляем в наш коллбек
Хочу заметить, что ВСЕ действия из OnQueryFinish должны быть перенесены в ваш собственный коллбек, а OnQueryFinish - удален
3. Еще мне хотелось бы повнимательнее рассмотреть параметры
PHP код:
mysql_query_callback( index, query[], callback[], extraid = (-1), connectionHandle = 1);
Чтобы иметь в собственном коллбеке доступ к переменным (например, playerid), вы должны передать их в качестве параметров функции mysql_query_callback - index (основной) и extraid (дополнительный). Если какой-то параметр передавать не надо, ставим -1.PHP код:
ВашКоллбек(query, index, extraid, connectionHandle);
Если что-то не понятно, спрашиваем.
P.S. Если заметили ошибку, пишите в этой теме