MuhammadPawn

инклуд
ViHouse - Библиотека для создания домов на сервере

В теме 1 сообщение

Всем привет решил написать свою систему домов для Модов с 0, и RLS

Данный инклуд позваляет настроить систему домов под себя, хоть как.
Всё настраивается с помощью define 

 

Все define доступные для изменения и использования и примеры:

 

Спойлер

HOUSE_SYSTEM_TEXT_SALE - Хранит информацию что будет показываться когда дом куплен
HOUSE_SYSTEM_TEXT_SALE_FORMAT - Был создан для редактирования параметров вывода текста в HOUSE_SYSTEM_TEXT_SALE

Пример использования:


#define HOUSE_SYSTEM_TEXT_SALE "Дом продаёться\n Цена %d"
#define HOUSE_SYSTEM_TEXT_SALE_FORMAT HOUSE_PRICE

HOUSE_SYSTEM_TEXT_OWNER - Хранит информацию что будет показываться когда дом куплен
HOUSE_SYSTEM_TEXT_OWNER_FORMAT - Был создан для редактирования параметров для вывода текста в HOUSE_SYSTEM_TEXT_OWNER

Пример использования:


#define HOUSE_SYSTEM_TEXT_OWNER "Дом куплен\n Хозяин: %s\nЦена: %d"
#define HOUSE_SYSTEM_TEXT_OWNER_FORMAT HOUSE_OWNER,HOUSE_PRICE

Доступные define для использования в HOUSE_SYSTEM_TEXT_OWNER_FORMAT и HOUSE_SYSTEM_TEXT_SALE_FORMAT:


HOUSE_PRICE - Цена дома
HOUSE_OWNER - Цена дома
HOUSE_POZISION - Кординаты дома (X, Y, Z)
HOUSE_POZISION_ENTER - Кординаты входа в дом (X, Y, Z)

HOUSE_ID_PICKUP - Ид пикапа который будет стоять у дома (пока токо стоит 1 при купленом\проданом, в след версии будет доступна 2 вида)

Пример использования: 


#define HOUSE_ID_PICKUP 1273

SYSTEM_HOUSE_ENTER - Разрешает Include входить в интерьеры дома (стандартными методами)

Пример использования:


#define SYSTEM_HOUSE_ENTER

SYSTEM_HOUSE_EXIT - Разрешает Include выходить из домов (если вы не собираетесь делать настройки дома, то можно включить эту функцию)

Пример использования:


#define SYSTEM_HOUSE_EXIT

HOUSE_KEY_ENTER - Установить ID клавиши который будет отвечать за вход\выход из дома (работает даже при отключённых параметрах SYSTEM_HOUSE_ENTER и SYSTEM_HOUSE_EXIT)

пример использования:


#define HOUSE_KEY_ENTER 1024 // ALT

 

 

Примечание: Прописывать все использованные define до подключения Include

 

Доступные функции и Автовызваемые Public

 

Спойлер

public OnPlayerKeyHouse(playerid, house_id, statis) - Вызывается когда игрок нажал клавишу указанную в HOUSE_KEY_ENTER около дома\в доме
 


playerid - id игрока
house_id - id дома у которого\в котором была нажата клавиша
statis - Статус где нажата 0 - На улице, 1 - В доме

Create_House_System - Функция которая создаёт дом, возвращает ид созданного дома


price - Цена
X,Y,Z - Где будет стоять дом
EX,EY,EZ - кординаты интерьера дома
Int - Ид интерьера дома

Get_System_House_Owner - Узнать владельца дома, параметры:


id - ID дома у которого надо узнать кто владелец (None - дом не чей) возвращает string

Set_System_House_Owner - Установить владельца для дома, параметры:


id - Ид дома
Owner - Имя к которому будет привязан дом (Имя владельца)

Get_System_House_price - Узнать цену дома, параметры:


id - Ид дома у которого надо узнать цену

Get_System_House_Pos - узнать позицию дома


Id - Ид дома у которого надо узнать кординаты 
&X,&Y,&Z - Возвращает кординаты дома по X,Y,Z (Float)

Get_System_House_Pos_Enter - узнать кординаты интерьера дома 


id - Ид дома у которого надо узнать кординаты 
&EX, &EY, &EZ - вернёт X,Y,Z кординаты интерьера (Float)
&Int - Вернёт интерьер который установлен в данном доме

 

Для работы требуется: sscanf 

 

Что планируется в след версиях:

Спойлер

1. Выбор загрузки\сохранения домов mxINI или MySQL

2. Добавить возможность ставить 2 вида пикапа когда дом куплен\продан

3. Добавить информацию куплен дом или нет (при вызове OnPlayerKeyHouse)

4. Добавить систему гаражей,Улучшений,ну и карту для сайта (если кому надо будет)

5. Создание команд и поддержку всех командных процессоров 

6. Добавить Закрытие\Открытие дома

 

Также вы можете предложить свои идеи для Include в комментариях 

Группа разработчиков: Victor's Studio

 

P.S: работает и в CR:MP 0.3e

 

Скачать: ViHouse.inc

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

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


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

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

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

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

    • legendabrn
      От legendabrn
      dontLimitedVehicles
      Данный плагин убирает лимиты ID автомобиля ( 611 )
      Поддерживаемые версии серверной части SA-MP: R2 & R3
      Поддерживаемые системы: Windows & Linux
      Покупая плагин вы получаете:
      Серверный плагин ( .so и .dll )
      Клиентский плагин формата .asi ( R3 )
      Инструкцию по установке и добавлению новых автомобилей
      Цена плагина: 200 ₽
      https://youtu.be/P_VPLgxyIik
       
      В аренду не даю
      В долг не даю
      По братски не даю
       
      После покупки отписать мне, для выдачи ключа
      ВНИМАНИЕ!!!
      ЕСЛИ ВЫ КУПИЛИ НА СОСЕДНЕМ ФОРУМЕ, ТО ЗНАЙТЕ, АДМНИСТРАЦИЯ СОСЕДНЕГО ФОРУМА ВАС ОБМАНУЛА! АВТОРОМ ПЛАГИНА И ПРОДАВЦОМ ЯВЛЯЮСЬ Я(LENEGDABRN)!
      ПРОДАЖА ПРОИСХОДИТ ТОЛЬКО НА ДАННОМ ФОРУМЕ И НИ НА КАКОМ БОЛЬШЕ ФОРУМЕ
       
    • pawlo
      От pawlo


      Просмотр файла QRCODE ALPHA 1.0

       
       
      Здраствуйте форумчане!
      Я  вот и выкатываю второе по счёту обновление иклуйда 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
      Добавил pawlo Добавлено 05.01.2021 Категория Плагины / инклуды Автор /vawylon/pawlo Совместимость с версией мультиплеера    
    • Weishaypt
      От Weishaypt
      Автор плагина: urShadow
      Адаптировал для 0.3e: H-U-N-T-E-R
    • MuhammadPawn
      От MuhammadPawn
      Данный include позволит защитить сервер от копирования объектов (когда на ваш сервер заходят люди с Map Plus и копируют весь маппинг) Что-бы использовать данный include вам просто надо подключить его после a_samp, если вы используете streamer то подключайте после него (для коренной работы)
      пример без streamer'a
      #include a_samp #include AntiMapPlus пример с streamer'om
      #include a_samp #include streamer #include AntiMapPlus Разработчик MuhammadPawn (Victor's Studio)
      если найдёте ошибки пишите в ниже в коменты 
      Скачать (github)
      Скачать с сервера форума: 
      AntiMapPlus.inc
    • Гость stibs
      От Гость stibs
       
      iMenu.inc
      v1.1
      by iAmir(aka: amirab)
       
      ОБЩАЯ ИНФОРМАЦИЯ: 
      Меню кликабельных текстдравов, сделанных с помощью iPleomax TextDraw Editor. 
      Данная штуковина может использоваться для магазинов, инвентарей  и пр. 
      ВНИМАНИЕ! Инклуд использует TextDrawPrewievModel, а значит не будет поддерживаться версией, меньше чем 0.3x. Для корректной работы инклуда рекомендуется использовать версию 0.3.7. 
      ЛОГ ИЗМЕНЕНИЙ: 
      19/06/2017 - v1.1 • Увеличение лимитов предметов на каждое меню до 16! • Добавлены параметры для изменения цветов разных частей меню (подробнее далее) • Добавлен новый параметр 'modelid' в 'iMenuPlayerResponse' ФУНКЦИИ И ДЕТАЛИ: 
      stock iMenu_ShowForPlayer(playerid , im_menuid , im_caption[] , framecolor = 128 , headercolor = 128 , bordercolor = -5963521 , captioncolor = -5963521 , buttoncolor = 255 , mainbuttontextcolor = 0xFFFFFFFF , noprevtextcolor = 0xFFFFFFFF) // Покажет само меню для игрока, а также делает меню готовым для добавления элементов // playerid - ИД игрока, которому показываем // im_menuid - ИД меню (можно задефайнить для удобства) // id_caption[] - заголовок меню // остальные параметры - цвета, подробнее далее stock iMenu_AddItem(playerid , im_item_number , im_item_string[] , im_description[] , im_preview_model = -1 , Float:im_rx = 0.0 , Float:im_ry = 0.0 , Float:im_rz = 0.0 , Float:im_zoom = 1.0 , itemtextcolor=0xFFFFFFFF ,desc_col=-5963521, previewbg = 255 , vehcol1=-1 , vehcol2=-1) // добавляет элементы для меню. В версии 1.0.0 макс. 12, в версии 1.1 - макс. 16 // playerid - ид игрока // im_item_number - номер от 0 до (версия 0.0 - 12, версия 1.1 - 16 ) // im_item_string[] - название строки в меню // im_description[] - описание предмета при его выделении // im_preview_model - ид модельки для превью. Можно оставить пустым (или -1), тогда будет показан текст NO PREVIEW // Float:im_rx - Поворот по оси X, если использована превью модль im_preview_model // Float:im_ry - Поворот по оси Y, если использована превью модль im_preview_model // Float:im_rz - Поворот по оси Z, если использована превью модль im_preview_model // Float:im_zoom - увеличение объекта, если использована превью модель im_prewiev_model // остальные настройки - настройки цветов, подробнее далее stock iMenu_HideForPlayer(playerid) // Скрывает меню для указанного игрока // playerid - ИД игрока, для которого скрываем меню public iMenuPlayerSelectItem(playerid , im_item) // Вызывается, когда игрока нажимает на элемент меню // playerid - ид игрока, который нажал // im_item - ИД элемента, на который нажал игрок public iMenuPlayerResponse(playerid , imenuid , itemid , modelid) // Вызывается, когда игрок нажал кнопку "Выбрать" (Select) в меню. // imenuid - ид меню // itemid - выбранный элемент // modelid - модель предварительного просмотра (если нет вернет -1) КАК НАСТРАИВАТЬ ЦВЕТА:

      headercolor - цвет заголовка captioncolor - цвет надписи заголовка itemtextcolor - цвет текста элемента buttoncolor - цвет фона кнопок в меню (выбрать, отмена и самих элементов меню).  framecolor - цвет основной рамки (выделен красным на фото).  prewievbg - цвет фона превью. bordercolor - цвет основных границ кнопок(обводок - на фото белые) и окна предпросмотра desc_col - цвет текста описания в превью mainbuttontextcolor - цвет текста кнопок select и cancel (выбор и отмена).  noprewtextcolor - цвет текста надписи NO PREVIEW (рекомендуется соблюдать сочетание цветов, например если фон превью белый и текст NO PREVIEW белый, то его видно не будет).  vehcol1 - первый цвет транспортного средства (работает только в том случае, если превью модель является транспортным средством) vehcol2  - второй цвет транспортного средства (работает только в том случае, если превью модель является транспортным средством) СКАЧАТЬ И ДЕМО: 
      Новая версия - английская (1.1): Скачать_en.inc
      Демо - английский язык (1.1): example_of_imenu.inc
      Старая версия - английская (1.0): Скачать_старую_версию_1.00_en.inc
      Демо - старая версия, английский язык (1.0): demo_1.00.inc
      АВТОРСТВО И ЛОКАЛИЗАЦИЯ:  
      Локализатор (перевод на русский язык статьи): Портал PAWNO-RUS.RU - @stibs.
      Автор инклуда: iAmir
      Ссылка на оригинал темы на sa-mp.com
      При копировании материала на другие ресурсы, указание ссылки на PAWNO-RUS.RU обязательно!