Здраствуйте форумчане!
Я вот и выкатываю второе по счёту обновление иклуйда QRCODE.inc который позволит вам рисовать QR код в игре с помощью текстдравов.
У QR кодов огромный потенциал в сфере SAMP. Данный иклуйд разрушает стену межу игроком и окном браузера.
Как мы знаем в MTA есть возможность показать окно браузера, но в samp - нет.
Я считаю данный инклуйд частично разрушит стену и позволит разработчикам открыть двери в разработки систем. Вот как я оцениваю потенциал:
Упрощение процедуры заполнения формы сборов средств;
Редирект на страницу оплаты или полный отказ формы доната на сайте;
Система безопасности ( вход по типу http://web.wathsapp.com/ );
Показывать QR код с ссылкой на ресурс;
И многое другое!
Инклуйд теперь использует плагин "TD-Streamer". Ибо раньше при создании QR кода было необходимо удалять все текстдравы перед отображением QR кода.
Плагин позволит обойти ограничения в создании 256 текстдравов.
Данный инклуйд работает с поддержкой 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'; // база данных ( по дефолту оставить так )
4. Загрузить папку "qr" из директории php на сервер с поддержкой PHP;
Установка и настройка инклуйда:
1. Содержимое папки pawn перенесите в папку с сервером.
2. Подклчите плагин sscanf mysql TextdrawStreamer
2. Подключите qrcode.inc
#include <qrcode.inc>
3. укажите ссылку на файл "q.php" и "g.php"
#define QRCODE_HOST "site.ru/qrcode/q.php" // site.ru - ваш сайт #define QRCODE_LINK "http:site.ru/qrcode/g.php" // "http:" или "https:" но ставить обаятельно в зависимости есть ли у вас SSL сертификат
4. Подключитесь к безе данных MySQL:
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]; 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 #define MAX_TEXT_QRCODE 50 #define MAX_SIZE_QRCODE 750
Скачать: ЯндексДиск
Не стесняйтесь задавать вопросы, предлагать улучшения и указывать на ошибки это очень важно, чтобы QR код был намного лучше![/size]
Я предлагаю услуги скриптинга:
Исправлении багов;
Написании каких либо скриптов;
Рисовании тексдравов;
Всё что связано в pawn!
По всем вопросам писать в телеграмм @vawylon
Автор я: pawlo/vawylon
Пожаловаться