поиск 3д текстов

Daniel_Pon

Активный
Автор темы
341
67
Версия MoonLoader
Другое
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    for i = 0, 2049 do
        if sampIs3dTextDefined(i) then
            local text, color, x, y, z, distance = sampGet3dTextInfoById(i)
            if text then
                print('ID:', i, 'Text:', text, 'Coords:', x, y)
                
            else
                print('sampGet3dTextInfoById - nil', i)
            end
        else
            print(0)
        end
    end
    while true do
        wait(0)
       
    end
end
я его рот шатал всегда 0 как мне 3д тексты получить
 

VanoKLR

Известный
993
610
Lua:
function main()
    while not isSampAvailable() do wait(0) end
    for i = 0, 2049 do
        if sampIs3dTextDefined(i) then
            local text, color, x, y, z, distance = sampGet3dTextInfoById(i)
            if text then
                print('ID:', i, 'Text:', text, 'Coords:', x, y)
               
            else
                print('sampGet3dTextInfoById - nil', i)
            end
        else
            print(0)
        end
    end
    while true do
        wait(0)
      
    end
end
я его рот шатал всегда 0 как мне 3д тексты получить
Я сделал фикс на костылях
его главный минус - при перезагрузки скрипта придётся обновлять зону стрима
говно:
tableLabel = setmetatable({}, {__mode = "v"})
addEventHandler('onReceiveRpc', function (RPCid,bs)
    if RPCid == 36 then
        wLabelID = raknetBitStreamReadInt16(bs)
        color = raknetBitStreamReadInt32(bs)
        x, y, z = raknetBitStreamReadFloat(bs),raknetBitStreamReadFloat(bs),raknetBitStreamReadFloat(bs)
        dist = raknetBitStreamReadFloat(bs)
        testLOS = raknetBitStreamReadInt8(bs)
        attachedPlayer = raknetBitStreamReadInt16(bs)
        attachedVehicle = raknetBitStreamReadInt16(bs)
        text = raknetBitStreamDecodeString(bs, 4096)
        tableLabel[wLabelID] = {text, color, x,y,z,dist,testLOS,attachedPlayer,attachedVehicle}
    elseif RPCid == 58 then
        tableLabel[raknetBitStreamReadInt16(bs)] = nil
    end
end)
originalSampGet3dTextInfoById = sampGet3dTextInfoById
originalsampIs3dTextDefined = sampIs3dTextDefined
function sampIs3dTextDefined(id)
    return tableLabel[id]
end
function sampGet3dTextInfoById(id)
    returnLableInfo = tableLabel[id]
    if returnLableInfo then
        return returnLableInfo[1], returnLableInfo[2], returnLableInfo[3], returnLableInfo[4], returnLableInfo[5], returnLableInfo[6], returnLableInfo[7], returnLableInfo[8], returnLableInfo[9]
    end
    return "", -1, 0, 0, 0, 0, 0, 0, 0
end
 

fokichevskiy

Известный
487
272
Lua:
local pool_3dText = setmetatable({}, {__mode = "v"})
local rawget, rawset = table.rawget, table.rawset

function sampev.onCreate3DText(id, color, pos, dist, testLOS, attplayer, attveh, text)
    -- print(id, text)
    pool_3dText[id] = {
        color = color,
        pos = {
            x = pos.x,
            y = pos.y,
            z = pos.z
        },
        dist = dist,
        walls = testLOS,
        player_id = attplayer,
        car_id = attveh,
        text = text
    }
end

function sampev.onRemove3DTextLabel(id) pool_3dText[id] = nil end
function Is3dTextDefined(id) return pool_3dText[id] ~= nil end

function Get3dTextInfoById(id)
    local data = pool_3dText[id]
    if data then
        return data.text, data.color,
               data.pos.x, data.pos.y, data.pos.z,
               data.dist, data.walls,
               data.player_id, data.car_id
    end
    return nil
end
метод работы с 3д текстами предоставил @stool
 
  • Нравится
  • Влюблен
Реакции: Орк, stool и Daniel_Pon