QRCODE ALPHA 1.0 1.0

   (0 отзывов)

1 изображение

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 


Скачать: ЯндексДиск
Не стесняйтесь задавать вопросы, предлагать улучшения и указывать на ошибки это очень важно, чтобы QR код был намного лучше![/size]

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


Автор я: pawlo/vawylon


 Пожаловаться



Еще файлы pawlo


Обратная связь

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

    • benz123
      От benz123
      Добрейшего дня форумчане. Вообщем вчера писал код для новогодних квестов на основе ActorDialog. Не работает клавиша закрыть, перерыл все форумы и весь интернет. Писал знакомой гадалке, даже она не знает. Надеюсь всемогущие форумчане смогут мне помочь. Очень прошу. 
      Код : 

      }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -12.1547,778.4205,12.0991))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,4, \"Текст?\", \"\", \"Персонаж 1\", [[\"Закрыть\",\"Agressive\",\"\"]],[\"\"]]");
                      EnablePlayerGPS(playerid, 37, -107.3198,785.9228,12.1681, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -107.3198,785.9228,12.1681))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,8, \"Ýòî óëûáêà-áîò Åãî óëûáàþùèéñÿ ýêðàí íàñòðîåí íà îáùåíèå ñ ëþäüìè, ñîçäàâàÿ ïîçèòèâíóþ àòìîñôåðó. Îí îñíàùåí ñèñòåìîé ðàñïîçíàâàíèÿ ëèö è ðå÷è, ÷òî ïîçâîëÿåò åìó àäàïòèðîâàòü îòâåòû ïîä íóæäû êàæäîãî ãîñòÿ\", \"\", \"Ïîìîùíèê Þðèé\", [[\"Çàêðûòü\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 4);
                      EnablePlayerGPS(playerid, 37, -253.4961,769.5287,12.1236, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -253.7807,768.8877,12.1219))
              {
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog_2","[0,9, \"Ýòîò êîìïàêòíûé ðîáîò - ýòî ðåâîëþöèîííàÿ óáîð÷íàÿ ìàøèíà áóäóùåãî, ñïîñîáíàÿ ïîääåðæèâàòü ÷èñòîòó íà áîëüøèõ ïëîùàäÿõ áåç ó÷àñòèÿ ÷åëîâåêà. Îí îñíàùåí ñèñòåìîé ðàñïîçíàâàíèÿ ïðåïÿòñâèé, óìíûì ïëàíèðîâàíèåì ìàðøðóòà è ýêîëîãè÷íûìè ÷èñòÿùèìè ñðåäñòâàìè. Èñïîëüçóåò ìèíèìàëüíîå êîëè÷åñòâî âîäû è ýëåêòðîýíåðãèè, ÷òî äåëàåò åãî ýêîëîãè÷åñêè áåçîïàñíûì è ýôôåêòèâíûì ïîìîùíèêîì äëÿ óáîðêè ãîðäñêèõ è îáùåñòâåííûõ ïðîñòðàíñòâ\", \"\", \"Ïîìîùíèê Äåíèñ\", [[\"Çàêðûòü\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 5);
                      EnablePlayerGPS(playerid, 37, -253.4961,769.5287,12.1236, "");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -256.0965,782.8863,12.1324))
              {
                  {
                      SetPlayerData(playerid, QUESTHelloween, 6);
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "Video", "[\"newyear/train_vol1.webm\", 0.5]");
                      SetTimer("konesvidoas",115000,false);
                      EnablePlayerGPS(playerid, 37, -2701.5149,381.4050,10.1074, "");
                  }
              }
          }
          if(newkeys == 1024)         //после этого можно не обращать внимание на последующий код. (не доделал )
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -2701.5149,381.4050,10.1074))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 6)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 7);
                      SCM(playerid, -1, "{FFFFFF}Äà èäè íàõóé îò ñþäà çàåáàë ÷åðò");
                  }
              }
          }
          if(newkeys == 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5026.2183,4054.4126,4.7527))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 7)
                  {
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,12, \"Õóé Çíàåò ÷òî òóò ïèñàòü ëåíü äîïèñûâàòü è çàõîäèòü íà ðàäìèð\", \"\", \"èäó íàõóé\", [[\"Ïîøåë ÿ íàõóé\",\"Agressive\",\"\"]],[\"\"]]");
                      SetPlayerData(playerid, QUESTHelloween, 8);
                      SetPlayerCheckpoint(playerid, -5008.2627,4067.5132,6.7602, 3.0);
                  }
              }
          }
          if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5026.2183,4054.4126,4.7527))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 13)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 14);
                      SendPacket_2(playerid, s_CefInterface, t_CefShow, "ActorDialog","[0,13, \"Õóé Çíàåò ÷òî òóò ïèñàòü ëåíü äîïèñûâàòü è çàõîäèòü íà ðàäìèð\", \"\", \"èäó íàõóé\", [[\"Ïîøåë ÿ íàõóé\",\"Agressive\",\"\"]],[\"\"]]");
                  }
              }
          }
          if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5044.3330,4049.4717,3.5460))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 14)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 15);
                  }
              }
          }
              if(newkeys & 1024)
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5044.3330,4049.4717,3.5460))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 14)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 15);
                  }
              }
          }
          if(newkeys & 1024) // YOI 1 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5008.2627,4067.5132,6.7602))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 8)
                  {
                      SetPlayerCheckpoint(playerid, -5002.4692,4066.9282,7.081, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 1 ec 5 noa?oaia.");
                      SetPlayerData(playerid, QUESTHelloween, 9);
                  }
              }
          }
          if(newkeys & 1024) // YOI 2 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5002.4692,4066.9282,7.0811))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 9)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 10);
                      SetPlayerCheckpoint(playerid, -5003.5225,4075.0249,4.1990, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 2 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 3 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5003.5225,4075.0249,4.1990))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 10)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 11);
                      SetPlayerCheckpoint(playerid, -5004.6738,4078.8770,6.4648, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 3 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 4 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -5004.6738,4078.8770,6.4648))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 11)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 12);
                      SetPlayerCheckpoint(playerid, -4984.7524,4082.1750,4.3296, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 4 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 5 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, -4984.7524,4082.1750,4.3296))
              {
                  if(GetPlayerData(playerid, QUESTHelloween) == 12)
                  {
                      SetPlayerData(playerid, QUESTHelloween, 13);
                      DisablePlayerCheckpoint(playerid);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 5 ec 5 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 1 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1906.3938,-2670.9546,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween11) == 1)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 1);
                      SetPlayerCheckpoint(playerid, 1872.6256,-2659.2671,11.1613, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 1 ec 10 noa?oaia.");
                      SetPlayerData(playerid, QUESTHelloween11, 2);
                  }
              }
          }
          if(newkeys & 1024) // YOI 2 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1872.6256,-2659.2671,11.1613))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 1)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 2);
                      SetPlayerCheckpoint(playerid, 2050.4109,-2655.9016,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Au oniaoii i?enoeee 2 ec 10 noa?oaia.");
                  }
              }
          }
          if(newkeys & 1024) // YOI 3 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2050.4109,-2655.9016,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 2)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 3);
                      SetPlayerCheckpoint(playerid, 2015.9215,-2651.8269,11.2707, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 4 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2015.9215,-2651.8269,11.2707))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 3)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 4);
                      SetPlayerCheckpoint(playerid, 1966.4814,-2671.0747,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 5 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1966.4814,-2671.0747,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 4)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 5);
                      SetPlayerCheckpoint(playerid, 2039.4039,-2671.2263,11.1599, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 6 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2039.4039,-2671.2263,11.1599))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 5)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 6);
                      SetPlayerCheckpoint(playerid, 1899.6978,-2655.9736,11.1613, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 7 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1899.6978,-2655.9736,11.1613))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 6)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 7);
                      SetPlayerCheckpoint(playerid, 1933.0284,-2659.2686,11.0084, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 8 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1933.0284,-2659.2686,11.0084))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 7)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 8);
                      SetPlayerCheckpoint(playerid, 1953.4424,-2651.9602,11.2707, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 9 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 1953.4424,-2651.9602,11.2707))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 8)
                  {
                      SetPlayerData(playerid, QUESTHelloween1, 9);
                      SetPlayerCheckpoint(playerid, 2012.9543,-2659.3840,11.2629, 3.0);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                  }
              }
          }
          if(newkeys & 1024) // YOI 10 NIAA
          {
              if(IsPlayerInRangeOfPoint(playerid,2.0, 2012.9543,-2659.3840,11.2629))
              {
                  if(GetPlayerData(playerid, QUESTHelloween1) == 9)
                  {
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      DisablePlayerCheckpoint(playerid);
                      SCM(playerid, 0x9FCE6DFF, "Õóé Çíàåò ÷òî òóò ïèñàòü");
                      SetPlayerData(playerid, QUESTHelloween, 2);
                  }
              }
          }




      Пояснение : Сервер если что копия радмира. Форум буду посещать 24/7.
      ВК: @afk2007
    • SystemDev
      От SystemDev
      Доброго времени суток, уважаемые пользователи Pawno-Rus!
      В первую очередь, хочу поздравить всех вас с наступающим новым годом и пожелать вам хорошего окончания этого года, и исполнения всех ваших желаний.
      Ну а теперь перейдём к самой теме, в которой я хочу представить вам свою доработку игрового мода Rockford RP.
      Мод был полностью протестирован моей командой и пофикшен максимум найденных нами багов. Мод был хорошо доработан и я могу с уверенностью заявить что он отлично подойдёт для основы или же под открытие с ним целого проекта!
      Что-ж, не будем много говорить и давайте перейдём к списку проделанной нами работы:
      1. Была полностью переписана система регистрации и авторизации. Более подробно вы можете взглянуть на неё на прикреплённых к теме изображениях.
      2. У домов и квартир теперь есть названия классов: Эконом, Комфорт, Комфорт+, Бизнес, Элитный
      3. Теперь  у каждого бизнеса есть иконка на карте (Их не было у продуктовых магазинов и 24/7)
      4. Были пофикшены актёры в бизнесах и актёры были добавлены в те бизнесы, в которых их не было (Не отображались)
      5. Был подключен и хорошо настроен античит Nex-AC, так-же у администрации теперь есть лист читеров в виде текстдрава в левом нижнем углу
      6. Был удалён весь лишний маппинг с улиц и пляжей, а так-же весь оставшийся маппинг был перенесён в модули
      7. Все текстравы были перенесены в модуль
      8. Проработаны начальные квесты
      9. Теперь у домов есть 3д текст на въезде в гараж и на выходе из гаража
      10. Меню дома теперь можно открыть нажав в доме "F"
      11. Теперь перед покупкой дома, можно взглянуть на него изнутри и уже после этого купить его нажав кнопку "F" в доме
      12. Теперь если нет медиков в игре, то мед.карту можно получить в регистратуре любой из больниц
      13. Пофикшен навигатор (Не всегда совпадали пункты)
      14. Добавлена 5 банда - The Rifa Gang
      15. Гетто теперь стало более обширным (130 квадратов)
      16. Новая система сытости и жажды (При уровне сытости и жажды ниже 20, появляются 2 иконки возле худа с деньгами игрока, их можно увидеть на одном из скриншотов)
      17. Система рулетки (Выдаётся за каждые 3 отыгранных часа. Использовать можно в /mm > Рулетка)
      18. Теперь у стрел мафий тоже есть своя табличка + киллы считаются
      19. Отредактированы и оптимизированы начальные работы (+ ЗП теперь выдаётся в случае смерти, спавна или вылета)
      20. Работа развозчика пиццы была улучшена и добавлена в /gps и в квесты
      21. Рабочий транспорт на работе газонокосильщика теперь бесплатный
      22. Теперь у всех дверей, ворот и шлагбаумов есть 3д текст с информацией как их открыть
      23. Ставка в автоматах казино ЛС теперь снимается сразу
      24. Добавлено казино ЛВ и игра в кости (5 игроков и крупье)
      25. Спавн в гетто был вырезан
      26. Теперь мафии не могут начать стрелу за бизнес, если у бизнеса нет владельца
      27. Крыша бизнеса теперь отображается
      28. Пофикшен "Online/Offline" в /leaders (Не правильно отображала)
      29. Бандам за капт теперь не даётся по 500 вирт
      30. Во время капта или стрелы участники теперь спавнятся на базе организации (Раньше спавнились в больнице с 10 ХП)
      31. Лечение в больнице теперь бесплатное (+ Лечение теперь начинается при нажатии ALT)
      32. Кокаин теперь тяжелый наркотик, а марихуанна лёгкий (Было наоборот)
      33. Убраны звуки в диалогах
      34. Метка поиска дома теперь удаляется
      35. При включении/выключении акций администрацией теперь всех уведомляет и автоматически меняется название сервера (Пример: Universal RP | Акция!)
      36. Переписана /ahelp
      37. Администрация теперь может останавливать стрелу мафий за бизнес (/stopbizwar)
      38. Добавлен запрет на оружие миниган, прибор ночного видения и т.п
      39. Пофикшены все сделки по продаже/обмене имущества (Деньги выдавались наоборот или вовсе не выдавались)
      40. Новая система операций с наличными
      41. Теперь все сделки и предложения происходят по Y/N
      42. Администрация теперь прямо из игры может удалить дом или бизнес: /delbiz /delhouse
      43. Теперь нельзя использовать /invite во время капта и стрелы
      44. Пофикшен текст при /unload (не отображалось кол-во привезённых матов)
      45. Новый 3д текст складов банд и мафий
      46. Для использования часов (/time) теперь нужно купить их в магазине аксессуаров и надеть на персонажа
      47. Для использования макси (/mask) теперь нужно купить её в магазине аксессуаров и надеть на персонажа (Так-же срок действия маски теперь 10 минут)
      и еще 30+ пунктов которые сюда не влезут так что тг @qnusn ( там покажу подробно описание мода)
      Если возникли какие-либо вопросы, пишите в Telegram - @qnusn
    • gooding
      От gooding


      Скачать файл PAR RP | Доработанный мод Cruela RP | Без багов
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

      Добавил gooding Добавлено 20.11.2024 Категория Моды Автор GOODING (Я)  
    • gooding
      От gooding
      Всем здравствуйте, уважаемые читатели. Я много времени потратил на доработку данного игрового мода, чтобы его выставить на форум.
      Лог доработок можно посмотреть внизу, а скриншоты игрового мода внизу и верху.
      Основа данного мода: Cruela RP
       
       

    • Yashich
      От Yashich
      Возникла проблема, не работает команда /giverank Что здесь может работать не так? Заранее спасибо за ответ)
      Вот строки кода связанные с этой командой (мод Аризона)
       
      CMD:giverank(playerid, params[]) {     if(PI[playerid][pMember]<=0)return 0;     if(PI[playerid][pRank] < 9 && PI[playerid][pLeader] == 0) return SCM(playerid, COLOR_RED, !"Отказано в доступе!");     if(sscanf(params,"ud",params[0],params[1])) return SCM(playerid, COLOR_RED, !"Используйте: /giverank [id] [rank]");     if(!ProxDetectorS(8.0, playerid, params[0])) return SCM(playerid, COLOR_GREY, !"Вы должны находиться рядом с игроком!");     if(PI[params[0]][pLeader] > 0 ) return SCM(playerid, COLOR_RED, !"Вы не можете изменять ранг лидеру");     if(params[1] < 1) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(Clother[params[0]]!=-1)return 0;     if(GetPlayerVirtualWorld(playerid)!=GetPlayerVirtualWorld(params[0]))return 0;     if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, !"Игрок не найден");     if(PI[playerid][pRank] <= PI[params[0]][pRank]) return SCM(playerid, COLOR_GREY, !"Вы не можете повысить/понизить этого игрока");     if(PI[playerid][pRank] == 9 && params[1] > 8) return SCM(playerid, COLOR_RED, !"Нельзя выдать ранг больше 8");     if(params[1] > 9) return SCM(playerid, COLOR_GREY, !"Нельзя повысить до этого ранга");     if(PI[params[0]][pMember] != PI[playerid][pMember]) return SCM(playerid, COLOR_GREY, !"Игрок находиться в другой организации!");     str_1[0] = EOS;     f(str_1,100,"Лидер %s %s до %i ранга",PN(playerid),PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),params[1]);     SCM(params[0],COLOR_LIGHTBLUE,str_1);     f(str_1,100,"Вы %sи игрока %s до %i ранга",PI[params[0]][pRank] > params[1] ? ("понизил"):("повысил"),PN(params[0]),params[1]);     SCM(playerid,COLOR_LIGHTBLUE,str_1);     PI[params[0]][pRank] = params[1];     UpdatePlayerDataInt(params[0], "Rank", params[1]);     if(PI[params[0]][pSex] == 2) if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],GOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     else if(TeamDuty{params[0]}) SetPlayerSkinEx(params[0],MOrgSkins[GetTeamID(params[0])][params[1]]), TogglePlayerControllable(params[0],true);     return 1; }