- 8
- 93
Здраствуйте форумчане!
Я вот и выкатываю обновление иклуйда QRCODE.inc который позволит вам рисовать QR код в игре с помощью текстдравов.
Подробнее о инклуйде на этой странице https://www.blast.hk/threads/74648/
Переделал я очень много, поэтому я создаю новую тему ибо всё что написано в старой актуально только назначение.
Инклуйд теперь использует плагин "TD-Streamer". Ибо раньше при создании QR кода было необходимо удалять все текстдравы перед отображением QR кода.
Плагин позволит обойти ограничения в создании 256 текстдравов.
Функциями стало гораздо удобнее и понятнее пользоваться в отличии от версии 0.1
Данный инклуйд работает с поддержкой PHP. PHP генерирует и сжжимает QR код без PHP никуда.В PHP присутствует библиотека для генерации QR кода ссылка на GITHUB
qrcode.inc использует
sscanf2 - github.com
mysql - github.com
TD-Streamer - github.com
Во всех FS замените OnPlayerClickPlayerTextDraw на ClickDynamicPlayerTextdraw. Где подключен qrcode.inc там надо. если вдруг перестастанет работать OnPlayerClickPlayerTextDraw.
Загружаем структуру базы данных:
в папке MySQL содержится структура базы данных. Установите её.
Установка и настройка php:
2. Откройте файл из архива "../php/qr/settings.php";
3. Настройте mysql.
Код:
$MYSQL_SERVER = '192.168.0.1'; // ip сервера MySQL
$MYSQL_USER = 'root'; // пользователь MySQL
$MYSQL_PASS =''; // пароль MySQL
$MYSQL_BD = 'qrcode'; // база данных ( по дефолту оставить так )
Установка и настройка qrcode.inc
1. Содержимое папки pawn перенесите в папку с сервером.
2. Подклчите плагин sscanf mysql TextdrawStreamer
2. Подключите qrcode.inc
Код:
#include <qrcode.inc>
Код:
#define QRCODE_HOST "site.ru/qrcode/q.php" // site.ru - ваш сайт
#define QRCODE_LINK "http:site.ru/qrcode/g.php"
// "http:" или "https:" но ставить обаятельно в зависимости есть ли у вас SSL сертификат
Код:
public OnGameModeInit()
{
if(QRCodeInit("host", "user", "password", "bd (по дефолту (qrcode)"))
{
printf("{QRCODE} = Ошибка подключения");
}
else
{
printf("{QRCODE} = áàçà \"qrcode\" MySQL ïîäêëþ÷åíà");
QRCodeSet(-1, QRCODE_TYPE_REDIRECT, "youtube", "https://www.youtube.com/");
LoadMysqlQRcode("youtube", qrcode);
}
return 1;
}
Расскажу о новых функциях с примерами.
Код:
QRCodeInit(SQL_HOST[], SQL_USER[], SQL_PASS[], SQL_DB[])
/*
SQL_HOST[] - ip MySQL
SQL_USER[] - логин
SQL_PASS[] - пароль
SQL_DB[] - база данных ( по дефолту qrcode )
*/
Пример:
public OnGameModeInit()
{
if(QRCodeInit("127.0.0.1", "root", "", "qrcode") == 0) // подключаемся к базе данных
{
printf("{QRCODE} = Ошибка подключения");
}
else
{
printf("{QRCODE} = база \"qrcode\" MySQL подключена");
}
return 1;
}
ShowQRcode(playerid, type, textqr[], Float:qrcode_x, Float:qrcode_y, Float:qrcode_size = 0.0, qrhandle[] = "")
/*
playerid - id игрока;
type - тип QR кода;
QRCODE_TYPE_REDIRECT переход по ссылке ( textqr[] );
QRCODE_TYPE_TEXT зашифрует текст( textqr[] ) в QR коде;
QRCODE_TYPE_PAGE_TEXT переход на страницу с текстом ( textqr[] );
textqr[] - текст;
Float:qrcode_x - позиция X (0.0 верх экрана );
Float:qrcode_y - позиция Y (0.0 лево экрана );
Float:qrcode_size = 0.0 - (размер текстдрава QR кода (по стандарту 0 максимум 1. по стандарту 0, оставьте пустым;
qrhandle[] = "" - идентификатор ( QRCODE_TYPE_TEXT идентификатор не нужен. оставьте пустым).
*/
Пример:
CMD:c(playerid, p[])
{
if(MAX_TEXT_QRCODE < strlen(p)) return SendClientMessage(playerid, -1, "[Сгенерировать QR ] - /c [text]");
ShowQRcode(playerid, QRCODE_TYPE_TEXT, p, 250.0, 250.0);
return 1;
}
stock ShowMysqlQRcode(playerid, qrhandle[], Float:qrcode_x, Float: qrcode_y, Float:qrcode_size = 0.0)
/*
qrhandle[] - индентификатор;
Float:qrcode_x - позиция X (0.0 верх экрана );
Float:qrcode_y - позиция Y (0.0 лево экрана );
Float:qrcode_size = 0.0 - (размер текстдрава QR кода (по стандарту 0 максимум 1. по стандарту 0, оставьте пустым.
*/
Пример:
CMD:l(playerid, p[])
{
if(strlen(p) == 0 && strlen(p) < MAX_SIZE_HANDLE) return SendClientMessage(playerid, -1, "[Показать QR код из базы данных] - /l [handle]");
ShowMysqlQRcode(playerid, p, 0.0, 0.0);
return 1;
}
stock CreatePlayerTextDrawsQrCode(playerid, QRCode:qrcodedata[], Float:qrcode_px, Float:qrcode_py, Float:qrcode_size = 0.0, sizeqr = sizeof(qrcodedata))
/*
playerid - id игрока;
QRCode:qrcodedata[] - массив данных;
Float:qrcode_x - позиция X (0.0 верх экрана );
Float:qrcode_y - позиция Y (0.0 лево экрана );
Float:qrcode_size = 0.0 - (размер текстдрава QR кода (по стандарту 0 максимум 1. по
sizeqr = sizeof(qrcodedata) - оставить пустым.
*/
stock QRCodeSet(playerid, type, qrhandle[], textqr[])
/*
playerid - id игрока;
type - тип QR кода;
- Работает только с этими типами!
QRCODE_TYPE_REDIRECT переход по ссылке ( textqr[] );
QRCODE_TYPE_TEXT зашифрует текст( textqr[] ) в QR коде;
qrhandle[] = "" - идентификатор ( QRCODE_TYPE_TEXT идентификатор не нужен. оставьте пустым).
textqr[] - текст;
*/
stock LoadMysqlQRcode(qrhandle[], QRCode:qrcodedata[], sizeqrcode = sizeof(qrcodedata))
/*
qrhandle[] - идентификатор
QRCode:qrcodedata[] - массив в который загрузится QR код
sizeqrcode = sizeof(qrcodedata) - оставить пустым
Загружает QR код в массив.
*/
Пример:
new QRCode:qrcode[MAX_SIZE_QRCODE+1];
public OnFilterScriptInit()
{
QRCodeSet(-1, QRCODE_TYPE_REDIRECT, "youtube", "https://www.youtube.com/");
LoadMysqlQRcode("youtube", qrcode);
}
CMD:youtube(playerid, p[])
{
CreatePlayerTextDrawsQrCode(playerid, qrcode, 200.0, 200.0);
return 1;
}
Определяем кнопки:
Код:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
if(QRCancel)
{
return SendClientMessage(playerid, 0x44FF44FF, "Нажата кнопка Cancel!");
}
if(QRDone)
{
return SendClientMessage(playerid, 0x44FF44FF, "Нажата кнопка Done!");
}
return 1;
}
Лимиты:
Код:
#define MAX_SIZE_HANDLE 64 // максимальная длинна индентификатора ( чем больше индентификатор тем больше qr код. используйте короткие индентификаторы. А лучше цифры!
#define MAX_TEXT_QRCODE 50 // максимальная длинна строки которую можно впихнуть в qr код. можно и больше, эта "безопасная длинна " не используйти символы #$%^&*(... много бит в них.
#define MAX_SIZE_QRCODE 750 // количесво ячеек для массива qrcode
Не стесняйтесь задавать вопросы, предлагать улучшения и указывать на ошибки это очень важно, чтобы QR код был намного лучше![/size]
Я предлагаю услуги скриптинга:
Исправлении багов;
Написании каких либо скриптов;
Рисовании тексдравов;
Всё что связано в pawn!
По всем вопросам писать в телеграмм @vawylon
FS - [include] QRCode
qrcode.inc Здраствуйте дорогие форумчане! В моей голове уже давно лежит идея инклуйда который позволит рисовать QR код в игре с помощью текстдравов, но была одна проблема. Проблема заключалась в том, что в qrcode даже в самом малом содержится около 300 пикселей, что никак не входит в лимиты...
www.blast.hk
FS - [include] QRCode
qrcode.inc Здраствуйте дорогие форумчане! В моей голове уже давно лежит идея инклуйда который позволит рисовать QR код в игре с помощью текстдравов, но была одна проблема. Проблема заключалась в том, что в qrcode даже в самом малом содержится около 300 пикселей, что никак не входит в лимиты...
www.blast.hk
FS - [include] QRCode
qrcode.inc Здраствуйте дорогие форумчане! В моей голове уже давно лежит идея инклуйда который позволит рисовать QR код в игре с помощью текстдравов, но была одна проблема. Проблема заключалась в том, что в qrcode даже в самом малом содержится около 300 пикселей, что никак не входит в лимиты...
www.blast.hk
Именно так он и работает. то есть рисует пиксели на подобии инвентаря
FS - [include] QRCode
qrcode.inc Здраствуйте дорогие форумчане! В моей голове уже давно лежит идея инклуйда который позволит рисовать QR код в игре с помощью текстдравов, но была одна проблема. Проблема заключалась в том, что в qrcode даже в самом малом содержится около 300 пикселей, что никак не входит в лимиты...
www.blast.hk
и правда как я не догадался?) Всё на столько просто! Нет нет и нет. Дело в том, что в 0.3.7 нет возможности подгрузки текстур. лишь слышал с лаунчерами есть возможно. и да это было бы гараздо удобнее предоставлять веб информацию(ссылки) через QR код.