qrcode.inc - рисование QR кодов в игре с помощью текстдравов
Автор: vawylon
У QR кодов огромный потенциал в сфере SAMP. Данный инклуд разрушает стену межу игроком и окном браузера. Как мы знаем, в MTA есть возможность показать окно браузера, но в samp - нет.
Данный инклуд частично разрушит стену и позволит разработчикам открыть двери в разработки систем. Вот как я оцениваю потенциал:
- Упрощение процедуры заполнения формы сборов средств;
- Редирект на страницу оплаты или полный отказ формы доната на сайте;
- Система безопасности ( вход по типу *тык* );
- Показывать QR код с ссылкой на ресурс;
И многое другое!
Данный инклуд работает с поддержкой PHP. PHP генерирует и сжимает QR код, без PHP никуда.
В PHP присутствует библиотека для генерации QR кода (ссылка на GITHUB: *тык*)
qrcode.inc использует:
* sscanf2 (*тык*)
* mysql (*тык*)
Инструкции по установке, настройке и примеры использования можно посмотреть в оригинальной теме, ссылка на которую указана в самом низу.
Скачать:
*тык*
Данный инклуд пока находится в сыром варианте! Обязательно сообщите в теме на форуме, если вы нашли какие либо опечатки или ошибки в тексте!
Ориг тема: PAWN-WIKI(не реклама)
Загрузил все на файлообменники т.к файлов очень много
Автор: vawylon
У QR кодов огромный потенциал в сфере SAMP. Данный инклуд разрушает стену межу игроком и окном браузера. Как мы знаем, в MTA есть возможность показать окно браузера, но в samp - нет.
Данный инклуд частично разрушит стену и позволит разработчикам открыть двери в разработки систем. Вот как я оцениваю потенциал:
- Упрощение процедуры заполнения формы сборов средств;
- Редирект на страницу оплаты или полный отказ формы доната на сайте;
- Система безопасности ( вход по типу *тык* );
- Показывать QR код с ссылкой на ресурс;
И многое другое!
Данный инклуд работает с поддержкой PHP. PHP генерирует и сжимает QR код, без PHP никуда.
В PHP присутствует библиотека для генерации QR кода (ссылка на GITHUB: *тык*)
qrcode.inc использует:
* sscanf2 (*тык*)
* mysql (*тык*)
Инструкции по установке, настройке и примеры использования можно посмотреть в оригинальной теме, ссылка на которую указана в самом низу.
Скачать:
*тык*
Данный инклуд пока находится в сыром варианте! Обязательно сообщите в теме на форуме, если вы нашли какие либо опечатки или ошибки в тексте!
Код:
Установка и настройка php:
1. Распакуйте содержимое архива.
2. Откройте файл из "../php/qr/settings.php";
3. Настроить mysql.
$MYSQL_SERVER = ''; // ip сервера MySQL
$MYSQL_USER = ''; // пользователь MySQL
$MYSQL_PASS =''; // пароль MySQL
$MYSQL_BD = 'qrcode'; // база данных ( по дефолту оставить так )
Код:
Установка и настройка qrcode.inc
1. Содержжимое папки pawn перенесите в папку с сервером.
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} = Ошибка подключения");
}
return 1;
}
Код:
Функции
stock QRCodeInit(SQL_HOST[], SQL_USER[], SQL_PASS[], SQL_DB[]):
/*
SQL_HOST[] - ip сервера MySQL;
SQL_USER[] - пользователь MySQL;
SQL_PASS[] - пароль MySQL;
SQL_DB[] - база данных (по стандарту "qrcode").
Подключается к базе данных
возвращает 1 при успешном подключении, 0 при неудачном.
*/
stock QrCodeIsSet(qrhandle[]):
/*
qrhandle[] - Идентификатор QR кода.
Проверяет - Существует ли QR код.
Возвращает true - если найден QR код
Возвращает false - база данных не подключена или QR кода не найден.
*/
stock QRCodeSet(type, qrhandle[], textqr[]):
/*
type - тип QR кода;
QR_CODE_TYPE_TEXT - текст;
QR_CODE_TYPE_URL - ссылка.
Создаёт QR код.
Суммарное количество символов в строке QRCODE_LINK и в строке qrhandle должно быть меньше 50 символов (MAX_TEXT_QRCODE).
Вернёт true - при успешном выполнении;
Вернёт false - при неудачном.
Если есть в "q.php" ошибки выведет в консоль:
{QRCODE} ERROR: 'Q'; [ не указан текст QR кода ]
{QRCODE} ERROR 'T'; [ не указан тип QR кода ]
{QRCODE} ERROR 'H'; [ не указан идентификатор ]
{QRCODE} ERROR 'U'; [ не указан QRCODE_LINK ]
{QRCODE} has not created QRCODE. long QRCODE; [сгенерирован слишком большой QR код ]
{QRCODE} bad query request MySQL; [ ошибка запроса ]
{QRCODE} has not mysql connected. [ файл не подключился к базе данных ]
*/
LoadQRCode(qrhandle[], qrcode[], sizeqrcode = sizeof(qrcode)):
/*
Загрузит QR код в массив.
qrhandle[] - идентификатор;
qrcode[] - сюда запишет данные.
Вернёт 1 - при удачном выполнении;
Вернёт 0 - при неудачном. ;
Вернёт 2 (PARSE_ERROR_MAX_SIZE) - если пикселей будет больше 256 ( не получится отобразить ограничение по лимитом sa-mp );
Вернёт 3 (PARSE_ERROR_BAD_ARRAY) - не валидная строка данных QR кода.
*/
stock GetTypeForHandle(qrhandle[]):
/*
qrhandle[] индентификатор к которому присвоен QR код
Вернёт 0 если не найден QR код
Вернёт тип QR кода если найден
*/
stock ParseString(stringqr[], qrcode[]):
/*
Конвертирует строку "7|0|0|3|5|2|1|" в массив QR код
Вернёт 1 при удачном выполнении;
Вернёт 0 при неудачном. ;
Вернёт 2 (PARSE_ERROR_MAX_SIZE) если пикселей будет больше 256 ( не получится отобразить ограничение по лимитом sa-mp );
Вернёт 3 (PARSE_ERROR_BAD_ARRAY) не валидная строка данных QR кода.
*/
stock CreatePlayerTextDrawsQrCode(playerid, qrcode[], sizeqr, Float:x, Float: y, Float: size):
/*
Создаёт и показывает игроку QR код.
qrcode[] - массив QR код;
Float:x - позиция (0.0) верх;
Float: y - позиция (0.0 лево;
Float: size - размер текстдрава 0.0 - 1.0 если больше 1.0 некорректно отобразится.
*/
stock DestroyPlayerTextDrawsQrCode(playerid):
/*
уничтожает QR код.
playerid - id игрока;
Вернёт true в любом случаи;
*/
Код:
Простой пример использования:
new qrcodes[1248]; // массив в котором будем хранить qr код
CMD:show(playerid, p[])
{
new handle[64], text[128], type;
if(sscanf(p, "p<,>s[64]s[128]d", handle, text, type))
{
return SendClientMessage(playerid, 0xFF4444FF, "/show [handle], [text], [type]");
}
if(QrCodeIsSet(handle) == 0) // если QR код не существует
{
if(QRCodeSet(type, handle, text) == 0) // создаём QR код
{
SendClientMessage(playerid, 0xFF4444FF, "Текст слишком большой!"); // если текст огромный, то выводим
return 1;
}
format(text, sizeof(text), "QRCode {FF0000}%s{44FF44} создан, введите повторно команду", handle);
SendClientMessage(playerid, 0x44FF44FF, text);
return 1;
}
else // если QR код существует
{
if(LoadQRCode(handle, qrcodes)) // загружаем QR код в массив qrcodes
{
CreatePlayerTextDrawsQrCode(playerid, qrcodes, 120.0, 120.0, 0.0); // показываем QR код
SendClientMessage(playerid, 0xFFCC00FF, "Наведите камеру смартфона на QR код!");
return 1;
}
return SendClientMessage(playerid, 0xFF4444FF, "Ошибка загрузки QR кода!");
}
}
Ориг тема: PAWN-WIKI(не реклама)
Загрузил все на файлообменники т.к файлов очень много