MoonR5 | Мини альтернатива SAMPFUNCS для SAMP 0.3.7 R5

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
MoonR5 - Библиотека для работы с самповскими функциями на версии 0.3.7 R5. Причиной разработки послужило отсутствие( надеюсь временное ) SAMPFUNCS'а под данную версию клиента.

На данный момент функций в библиотеке в два раза меньше чем у SAMPFUNCS. Но со временем думаю функционал будет расширяться, а баги фикситься.

Для работы с RPC можете использовать: RakLua

Разработчики: @ARMOR @AdCKuY_DpO4uLa

Отдельное спасибо за помощь в разработке: @FYP

Пример работы с библиотекой:
Получение информации о сервере:
require 'MoonR5' -- Подключаем саму библиотеку

function main()
    while not isSampInit() do wait(100) end -- Проверка на запуск сампа, объязательно добавляйте её

    sampAddChatMessage("Скрипт загружен!", -1) -- Отправляем в чат сообщение о том что скрипт загрузился

    sampRegisterChatCommand("serverinfo", function() -- Регистрируем команду /serverinfo при вводе которой скрипт будет показывать нам диалог с информацией о сервере
        local serverName = sampGetServerName() -- Получаем название сервера
        local address, port = sampGetServerAddress() -- Получаем IP адрес сервера
        local playerCount = sampGetPlayerCount() -- Получаем количество игроков на сервере

        sampShowDialog(888, 0, "Тестовый диалог", ("{FFFFFF}Вы находитесь на сервере: {D97B16}%s\n{FFFFFF}Адрес сервера: {D97B16}%s:%d\n{FFFFFF}На данный момент на сервере: {D97B16}%d {FFFFFF}игроков"):format(serverName, address, port, playerCount), "ОК", "Закрыть") -- Показываем диалог с информацией которую мы получили выше
    end)

    addEventHandler('onScriptTerminate', function(scr, quit) if scr == thisScript() then unload() end end) -- Удаляем всё команды которые мы регистрировали.
 
    wait(-1)
end

Эмуляция BitStream с помощью RakLua:
require 'MoonR5' -- Подключаем нашу библиотеку
local RakLua = require 'RakLua' -- Подключаем библиотеку RakLua

function main()
    while not isSampInit() do wait(100) end -- Проверка на инициализацию SAMP'а

    sampRegisterChatCommand("setpos", function(arg) -- Регистрируем комманду /setpos с помощью которой мы будем координаты игроков
        local x, y, z = arg:match("(%d+) (%d+) (%d+)")
        local bs = RakLuaBitStream.new() -- Создаем новый BitStream
        bs:writeFloat(tonumber(x)) -- Первым параметром записываем координату X
        bs:writeFloat(tonumber(y)) -- Вторым параметром записываем координату Y
        bs:writeFloat(tonumber(z)) -- Третьим параметром записываем координату Z
        bs:emulIncomingRPC(12) -- Эмулируем входящий RPC
        sampAddChatMessage(("Вы переместились на координаты X: %0.1f | Y: %0.1f | Z: %0.1f"):format(x, y, z), -1)
    end)

    addEventHandler('onScriptTerminate', function(scr)
        if scr == thisScript() then unload() end -- Удаляем ранее зарегистрированые нами комманды
    end)

    wait(-1)
end

Также специально для библиотеки было создано WIKI где можно ознакомиться со всеми функциями библиотеки.

Установка библиотеки происходит таким методом:
  1. Скачиваете MoonR5.dll из вложений
  2. Перекидываете скачаный файл в папку moonloader/lib
В библиотеке было использовано: SAMP-API

PS: В сравнении с SAMPFUNCS'ом имеется в виду только наличие функционала для Moonloader'а, а не отдельное C++ API, или CLEO функции.
 

Вложения

  • MoonR5.dll
    205 KB · Просмотры: 81
Последнее редактирование:

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
Update:
1. Названия функций изменены. ( Теперь не надо писать samp. у каждой функции, а просто название функции )
2. Были добавлены фунции: sampCreateChatBubble(), sampGetChatBubbleInfo(), sampGet3dTextInfo(), sampGetChatStringInfo()
3. Была удалена функция unregisterChatCommand()
 
  • Нравится
Реакции: whyega52 и AdCKuY_DpO4uLa

MrCreepTon

Неизвестный
Всефорумный модератор
2,214
5,025
непон
1686337928177.png
 

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
  • Вау
Реакции: whyega52

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
Update:
Добавлено функции:
sampSetLicensePlateOnVehicle() - Устанавливает текст на номера транспорта.
sampSendPickup() - Отправляет серверу RPC о поднятии пикапа.
sampGetPickupHandleById() - Получает хендл пикапа по его IDю
sampGetPickupModelById() - Получает подель пикапа по его ID.
sampGetPickupIdByHandle() - Получает ID пикапа по его хендлу.
sampGetHandle() - Возвращает адрес samp.dll.
sampSendChat() - Отправляет сообщение/команду в чат.

Так же у некоторых функций добавлены получаемые параменты отвечающие за результат получения данных
 
  • Нравится
Реакции: whyega52

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
Бля, а я делал это через создание 3d текста над головой и удаления его через 5 секунд. Оказывается где-то был адрес памяти на его создание :(
Да, эти функции есть в сампе, но Фип почему-то не добавил их в SAMPFUNCS кстати если эта функция тебе нужна для других версий то я её выкладывал здесь

PS: Ещё можно вызывать этот текст с помощью эмуляции 59 RPC
 
  • Влюблен
Реакции: TastyBread123

ARMOR

011110000111100101101001
Автор темы
Модератор
4,969
6,890
UP: Добавил 17 функций для работы с текстдравами.
 
  • Нравится
Реакции: whyega52