Как сделать текстдравы в самп мобайл
Многие задаются вопросами: Как играть в SAMP на Android на любом сервере, или же сделать собственный лаунчер для Вашего сервера, и как использовать, чем компилировать исходники клиента SAMP, и что дальше делать с libsamp.so?
Сегодня Мы расскажем Вам все, и в мельчайших подробностях.
Лаунчер сервера - Это всего лишь утилита конкретного сервера, которая автоматически качает и устанавливает на ваш телефон модифицированный GTA:SA + Кэш, со вшитым и доработанным мультиплеером, на основе build69 исходников.
Советуем прочесть наш гайд по созданию Лаунчера SAMP/CRMP для Android (С исходниками)
Модифицированный GTA:SA .apk (Он же SAMP) - apk файл, со вшитым libsamp.so (О нём мы расскажем ниже)
Модифицированный Кэш GTA:SA (com.rockstargames.gtasa) - Это все файлы игры, плюс файлы самого SAMP (Текстуры, модели, объекты и различные настройки)
libsamp.so - Этот файл получается в результате компилирования исходников SAMP, и вшивается в модифицированный APK файл GTA:SA.
Порядок действий: (Предварительно удалите все клиенты, лаунчеры и кэши сторонних серверов с телефона).
1. Вы качаете исходники SA-MP (Билд исходных файлов мультиплеера, код написан на C++).
2. После чего вы дорабатываете исходники до необходимого функционала, меняете IP, порт, и другие параметры, куда будет подсоединяться клиент.
3. Компилируете исходники с помощью Android NDK, и получаете libsamp.so
4. Качаете готовый Кэш игры (Ссылка ниже) с необходимыми для работы SAMP файлами, и перемещаете его в Android/data/. (Чтобы получилось Android/data/com.rockstargames.gtasa/)
5. Устанавливаете apk файл игры (Ссылка ниже).
6. libsamp.so вшиваете в уже установленный apk файл игры с помощью приложения APK Editor, сохраняете Ваш новый APK, и устанавливаете поверх уже установленного (Не удаляя его, чтобы не удалить кэш вместе со старым apk).
7. Настройте Android/data/com.rockstargames.gtasa/files/SAMP/settings.ini
Ответы на вопросы
- Выдает ошибку, связанную с cheats.cpp, cheats.h, pCheats, pAdmin
Ответ: В наших исходниках данные проблемы уже исправлены
- Крашит игру после запуска мультиплеера / Ошибка keyboard.cpp или keyboard.h (Клавиатуры)
Ответ: Вы компилируете исходники с несовместимой версией Android NDK. Используйте Android NDK 14 версии, которая полностью совместима с кодом
Как сделать текстдравы в самп мобайл
Просмотр файла QRCODE ALPHA 1.0
Инклуйд теперь использует плагин "TD-Streamer". Ибо раньше при создании QR кода было необходимо удалять все текстдравы перед отображением QR кода.
Плагин позволит обойти ограничения в создании 256 текстдравов.
Данный инклуйд работает с поддержкой PHP. PHP генерирует и сжжимает QR код без PHP никуда.
PHP использует:
библиотека для генерации QR кода ссылка на GITHUB
Настройка и установка:
Загружаем структуру базы данных
в папке 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;
Функции с примерами:
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("= Ошибка подключения"); > else < printf("= база \"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; >
Автор я: pawlo/vawylon
Добавил pawlo Добавлено 05.01.2021 Категория Плагины / инклуды Автор /vawylon/pawlo Совместимость с версией мультиплеера
Инклуйд теперь использует плагин "TD-Streamer". Ибо раньше при создании QR кода было необходимо удалять все текстдравы перед отображением QR кода.
Плагин позволит обойти ограничения в создании 256 текстдравов.
Данный инклуйд работает с поддержкой PHP. PHP генерирует и сжжимает QR код без PHP никуда.
PHP использует:
библиотека для генерации QR кода ссылка на GITHUB
Настройка и установка:
Загружаем структуру базы данных
в папке 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;
Функции с примерами:
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("= Ошибка подключения"); > else < printf("= база \"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; >
Всем привет
Решил заняться разработкой своим сервером SAMP Mobile (Android) и делится своим опытом с вами
Все уроки будут опубликоваться в этой теме
Список уроков:
Также пишите в коменты какие вы хотите видеть уроки по SAMP Mobile (Android)
SAMP Mobile (Android) - Урок 1. Компиляция libsamp.so
Всем привет
В этом уроке я вас научу:
- Компилировать исходники SAMP Mobile (Android)
- Ставить свой IP:port для подключения
Приступим
Нам понадобится:
- Исходники SAMP Mobile (Android): GitHub
- NDK 19 (именно 19): NDK older releases
- Командная строка
- Прямые руки
Для начало распакуем содержимое архива build69-master.zip папку jni в любое вам место (лучше создайте отдельную папку на диске C для удобства)
И в тоже место наш NDK
После того как мы всё разархивовали запускаем Командную строку (CMD)
Нажимаем win+r и вводим cmd и нажимаем кнопочку ОК
После этого пишем в командной строке:
Пример: cd C:/Android/NDK и нажимаем Enter
После того как мы перешли в командной строке в папку с нашим NDK нам надо поставить свой IP:port для сервера
Для этого переходим по пути и открываем файл любым редактором (в моём случае): Android/jni/main.cpp и ищем такие строки:
И меняем 2 строки encryptedAddress.decrypt(), port что бы получилось вот так:
После того как мы отредактировали main.cpp сохраняем его и открываем следующий файл Application.mk (Любым редактором) и меняем
После этого сохраняем наш Application.mk и возвращаемся в командную строку
В командной строке пишем следующие:
Нажимаем Enter и ждём
При удачном компилирование должно получится:
В следующем уроке я расскажу как его поместить в наш samp.apk
Урок 2. Сбор проекта (.apk)
Приступим
- Программа для Android: ApkEditor(За содержимое файла я не несу ответственности)
- Наш скомпилированный libsamp.so
- Прямые руки
Запускаем нашу программу ApkEditor и нажимаем "Выберите файл APK"
И выбираем его, после этого выбираем "Полное редактирование"
После завершения процесса декодирования, переходим во вкладку "Файлы"
В низу с лева нажимаем на "+" и выбираем наш скомпилированный libsamp.so
После того как завершится добавления файла "libsamp.so" В верху с права нажимаем на кнопку "Сборка"
После сборки нас должно встретить окно о завершение сборки проекта
После этого переходим по пути которому указала программа и забираем наш apk
Вот и всё очень просто
В следующем уроке я расскажу как заменить загрузочный экран SAMP ANDROID на свой
Хотел бы дополнить ваш урок или точнее альтернативный вариант с вводом хоста и порта.
Если изменить данный кусок кода на мой вариант, то не придется каждый раз компилировать нативную библиотеку, можно будет просто заносить свои изменения в файл settings.ini.
А точнее просто дописав
Данная инструкция не доведена до ума, так как есть еще доп файлы к клиенту и если просто скомпилировать, то будет вылетать так как в исходниках есть ошибки, авторы исходников это потвердили.
Урок 2. Сбор проекта (.apk)
Приступим
- Программа для Android: ApkEditor(За содержимое файла я не несу ответственности)
- Наш скомпилированный libsamp.so
- Прямые руки
Запускаем нашу программу ApkEditor и нажимаем "Выберите файл APK"
И выбираем его, после этого выбираем "Полное редактирование"
После завершения процесса декодирования, переходим во вкладку "Файлы"
В низу с лева нажимаем на "+" и выбираем наш скомпилированный libsamp.so
После того как завершится добавления файла "libsamp.so" В верху с права нажимаем на кнопку "Сборка"
После сборки нас должно встретить окно о завершение сборки проекта
После этого переходим по пути которому указала программа и забираем наш apk
Вот и всё очень просто
В следующем уроке я расскажу как заменить загрузочный экран SAMP ANDROID на свой
Как оптимизировать мод под Mobile версию?
Как сделать текстдравы в самп мобайл
? СЕГОДНЯ В ВИДЕО: ? Сегодня я расскажу вам о новостях мира SAMP Android (самп на телефон). ? ВАЖНАЯ .
? СЕГОДНЯ В ВИДЕО: ? Сегодня я расскажу вам про новый клиент SAMP на телефон Android от бразильского .
Подготавливаю сервер к выходу новой версии клиента с поддержкой текстдравов и остальных крутых функций.
Читайте также: