Говнокод?

  • Да

    Голосов: 8 88.9%
  • Скорее да

    Голосов: 0 0.0%
  • Скорее нет

    Голосов: 0 0.0%
  • Нет

    Голосов: 1 11.1%

  • Всего проголосовало
    9
  • Опрос закрыт .

Tectrex

Известный
Автор темы
126
135
Введение

Библиотека сфер (SLib) - это библиотека Lua, разработанная для использования в Moonloader. Она предоставляет функциональность для создания, управления и рендеринга сфер в игровом мире, а также для обнаружения сущностей в этих сферах. В этой документации описано, как использовать библиотеку.


Установка

Чтобы использовать библиотеку SLib, сначала необходимо убедиться, что установлен vector3d.lua. Затем поместите файлы sphere_lib.lua в каталог lib.


Использование

  1. Создание сфер
    Чтобы создать сферу, используйте функцию crtSph:
    Lua:
    local sphere = require("sphere_lib")
    local sphereId = sphere.crtSph(pPed, radius, followPlayer, centerX, centerY, centerZ, detailLevel, color)
  • pPed: PLAYER_PED или handle другого персонажа, к которому привязана сфера (необязательно, если followPlayer - false).
  • radius: Радиус сферы.
  • followPlayer (следовать за игроком): Булево значение, указывающее, должна ли сфера следовать за персонажем игрока/другим персонажем.
  • centerX, centerY, centerZ: координаты центра сферы (используется, если значение followPlayer равно false).
  • detailLevel: Уровень детализации для рендеринга сферы (более высокие значения приводят к увеличению количества сегментов).
  • color: Цвет сферы
  1. 1. Обновление и рендеринг сфер
    Функция updRndr обновляет позиции всех сфер (если они следуют за персонажем игрока/другими персонажами) и рендерит их:
    sphere.updRndr()
    Эта функция должна вызываться в главном цикле вашего скрипта для постоянного обновления и рендеринга сфер.

  1. 2. Обнаружение объектов в сфере
    Чтобы собрать сущности внутри сферы, используйте функцию colEntInSph:
    Lua:
    local entities = sphere.colEntInSph(sphereId)
  • sphereId: Идентификатор сферы, возвращенной crtSph
    Эта функция возвращает таблицу с ключами objects, players и cars, каждый из которых содержит список идентификаторов сущностей в сфере.


Пример использования
Lua:
local sphere = require("sphere_lib")
function main()
    if not isSampAvailable() then return end
    
    local info = sphere.crtSph((select(2, sampGetCharHandleBySampPlayerId(49))), 5, true, nil, nil, nil, 5, -1)
    local pCoords = {}
    while true do
        wait(0)
        local en, ent = pcall(sphere.colEntInSph, info)
        if en and ent and ent.players then
            local actPId = {}
            for _, pid in ipairs(ent.players) do
                local _, pChar = sampGetCharHandleBySampPlayerId(pid)
                if pChar and doesCharExist(pChar) then
                    local x, y, z = getCharCoordinates(pChar)
                    pCoords[pid] = {x, y, z}
                    actPId[pid] = true
                end
            end
            for id, _ in pairs(pCoords) do
                if not actPId[id] then
                    pCoords[id] = nil
                else
                    print(id, unpack(pCoords[id]))
                end
            end
        end
        sphere.updRndr()
    end
end


Результат:

1710847585469.png

Выводит координаты и ID персонажей внутри сферы, в том числе персонажа к которому привязана сфера, исключение PLAYER_PED
 

Вложения

  • sphere_lib.lua
    2.7 KB · Просмотры: 8

MLycoris

На вид оружие массового семяизвержения
Проверенный
1,992
2,187
всмысле уже, их еще не было, а они уже заебали
 

XRLM

Против ветра рождённый
Проверенный
1,512
1,104
так а реально, нахуя это нужно вообще? приведите хотя бы 1 пример применения этого скрипта, чтобы не было альтернативной замены той же проверкой по радиусу, что будет намного лучше, чем использовать эту либу