В теме 2 сообщения

pawlo
Новичок

QRCODE ALPHA 1.0


img_1609674595__poster.png

 

 

Здраствуйте форумчане!
Я  вот и выкатываю второе по счёту обновление иклуйда 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 

qrcode alpha 1.0.rar
Не стесняйтесь задавать вопросы, предлагать улучшения и указывать на ошибки это очень важно, чтобы QR код был намного лучше![/size]

Я предлагаю услуги скриптинга:
Исправлении багов;
Написании каких либо скриптов;
Рисовании тексдравов;
Всё что связано в pawn!
По всем вопросам писать в телеграмм @vawylon


Автор я: pawlo/vawylon


  • Добавил
  • Добавлено
    05.01.2021
  • Категория
  • Автор
    /vawylon/pawlo
  • Совместимость с версией мультиплеера
     

 

Отредактировано пользователем odosenok

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@pawlo хорошая идея, только лучше было бы, если без костылей с PHP, на C++ наверняка есть библиотеки, генерирующие QR коды.

Может быть, кто-нибудь доработает вашу идею. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • bogdan295@gmai
      От bogdan295@gmai
      Здраствуйте, я создавал новую организации когда дело дашло до пикапов они не создаются 
      new lssd1; new lssd2;  else if(pickupid == lssd2)// Вход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,1567.5510,-1657.9956,5.3859);         SetPlayerFacingAngle(playerid, 500);         return true;     } else if(pickupid == lssd1)// Вsход     {         SetPlayerInteriorEx(playerid,0);         SetPPos(playerid,630.0542,-572.0032,16.3359);         SetPlayerFacingAngle(playerid, 500);         return true;     }     lssd2 = CreatePickupAC(1318,1,626.9653,-571.8394,17.9207, 147); // вход лссд     lssd1 = CreatePickupAC(1318,1,1567.4720,-1660.6494,5.3859, 147); // выход лссд Что я сделал не так?
    • tgfoscar
      От tgfoscar
      Требуется свободное владение C++. Античит, новый способ добавления техники на сервер, совместимость с CEF и возможность добавления полезных функций. За дополнительной информацией обращайтесь к wayne_gm в Discord.
    • enotplaysupptor
      От enotplaysupptor
      Основа для мода Samp для начинающих
      Скачать файл ╔══════════════════════════════════════════════════╗
      ║               Test-RolePlay v0.1           ║
      ║       Современная основа для SA-MP серверов      ║
      ╚══════════════════════════════════════════════════╝
      ✦ О ПРОЕКТЕ:
         Добро пожаловать в Test-RolePlay - мод с нуля, 
         созданный как универсальная основа для SA-MP проектов.
         Проект был создан для тех кто не знает с чего начать и начинающих разработчиков
         Версия: T-RP v0.1 [Актуальная]
      ✦ ОСНОВНЫЕ ПЛАГИНЫ:
         ▸ CrashDetect    - отладка ошибок
         ▸ MySQL R41+     - работа с базой данных
         ▸ Pawn.CMD       - система команд
         ▸ Pawn.Regex     - регулярные выражения
         ▸ SKY            - улучшенные игровые функции
         ▸ sscanf2        - парсинг параметров
         ▸ Streamer       - динамические объекты
         ▸ TOTP           - двухфакторная аутентификация
      ✦ КЛЮЧЕВЫЕ СИСТЕМЫ:
         ┌──────────────────────────────────────────────┐
         │ 🔹 Умная регистрация/авторизация:            │
         │    - Хеширование паролей                     │
         │    - Привязка Email                          │
         │    - Выбор пола и расы персонажа             │
         ├──────────────────────────────────────────────┤
         │ 🔹 Командная система:                        │
         │    - Полный набор РП-команд                  │
         │    - Расширенные админ-команды               │
         ├──────────────────────────────────────────────┤
         │ 🔹 Игровое меню:                             │
         │    - Персональная статистика                 │
         │    - Настройки аккаунта                      │
         │    - Система жалоб и вопросов                │
         ├──────────────────────────────────────────────┤
         │ 🔹 Дополнительные системы:                   │
         │    - АФК-режим с автоматическим детектом      │
         │    - Интегрированный античит (Nex-AC)        │
         └──────────────────────────────────────────────┘
      ✦ ПЛАНЫ РАЗРАБОТКИ:
         » Добавление новых игровых систем
         » Оптимизация существующего кода
         » Расширение возможностей для администраторов
         » Улучшение пользовательского интерфейса
      Если увижу что вы хотите что бы я продолжил разработку данного мода пишите или можете проявиться большую активность










      Добавил enotplaysupptor Добавлено 09.07.2025 Категория Моды Автор Я  
    • Nekit2019
      От Nekit2019
      Добрый день, имеется сервер в CRMP 0.3е (старичок, знаю, решил поностальгировать) . меняю погоду через ркон, но она скипается через пару минут на нулевую! Не пойму от чего, скриптом отдельно на погоду нет. Пожскажите, может в gamemod0 или где еще и куда прописать можно погоду? либо чтоб менялась сама, либо статическую. Вставлял из инета код в гейммод на рандомную погоду через пол часа с уведомлениями - результат такой же, меняется на 1-20 ,но сама сбрасывается на 0 через минуту.
    • enotplaysupptor
      От enotplaysupptor
      ╔══════════════════════════════════════════════════╗
      ║               Test-RolePlay v0.1           ║
      ║       Современная основа для SA-MP серверов      ║
      ╚══════════════════════════════════════════════════╝
      ✦ О ПРОЕКТЕ:
         Добро пожаловать в Test-RolePlay - мод с нуля, 
         созданный как универсальная основа для SA-MP проектов.
         Проект был создан для тех кто не знает с чего начать и начинающих разработчиков
         Версия: T-RP v0.1 [Актуальная]
      ✦ ОСНОВНЫЕ ПЛАГИНЫ:
         ▸ CrashDetect    - отладка ошибок
         ▸ MySQL R41+     - работа с базой данных
         ▸ Pawn.CMD       - система команд
         ▸ Pawn.Regex     - регулярные выражения
         ▸ SKY            - улучшенные игровые функции
         ▸ sscanf2        - парсинг параметров
         ▸ Streamer       - динамические объекты
         ▸ TOTP           - двухфакторная аутентификация
      ✦ КЛЮЧЕВЫЕ СИСТЕМЫ:
         ┌──────────────────────────────────────────────┐
         │ 🔹 Умная регистрация/авторизация:            │
         │    - Хеширование паролей                     │
         │    - Привязка Email                          │
         │    - Выбор пола и расы персонажа             │
         ├──────────────────────────────────────────────┤
         │ 🔹 Командная система:                        │
         │    - Полный набор РП-команд                  │
         │    - Расширенные админ-команды               │
         ├──────────────────────────────────────────────┤
         │ 🔹 Игровое меню:                             │
         │    - Персональная статистика                 │
         │    - Настройки аккаунта                      │
         │    - Система жалоб и вопросов                │
         ├──────────────────────────────────────────────┤
         │ 🔹 Дополнительные системы:                   │
         │    - АФК-режим с автоматическим детектом      │
         │    - Интегрированный античит (Nex-AC)        │
         └──────────────────────────────────────────────┘
      ✦ ПЛАНЫ РАЗРАБОТКИ:
         » Добавление новых игровых систем
         » Оптимизация существующего кода
         » Расширение возможностей для администраторов
         » Улучшение пользовательского интерфейса
      Если увижу что вы хотите что бы я продолжил разработку данного мода пишите или можете проявиться большую активность