Как получить текст на педе

Fasmin

Участник
Автор темы
175
6
Версия MoonLoader
.026-beta
Как получить текст который отображает название фамы на игроке или на машине?
Если получать текст через sampGet3dTextInfoById, то эта функция почему то получает любой 3д текст, но не которые на педе и машине
 

Fasmin

Участник
Автор темы
175
6
Ну регулярками и получай нужный тебе текст
Так я получаю вообще любой текст в радиусе, только на педах и машинах это не работает почему-то

Lua:
while true do wait(0)
    for v=0, 2048 do
        local result = sampIs3dTextDefined(v)
        if result then
            local text, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(v)
            local x, y, z = getCharCoordinates(PLAYER_PED)
            --if text:match("фывыфв") then
                if isPointOnScreen(posX, posY, posZ, 0.1) then
                    if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 5.0 then
                        --local convertX, convertY = convert3DCoordsToScreen(posX, posY, posZ)
                        --renderFontDrawText(my_font, "ХУЙ", convertX, convertY, 0xFFFFFFFF)
                        sampAddChatMessage(text, -1)
                        wait(50)
                    end
                end
            --end
        end
    end
end
 

chromiusj

Известный
Модератор
5,662
3,964
Так я получаю вообще любой текст в радиусе, только на педах и машинах это не работает почему-то

Lua:
while true do wait(0)
    for v=0, 2048 do
        local result = sampIs3dTextDefined(v)
        if result then
            local text, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(v)
            local x, y, z = getCharCoordinates(PLAYER_PED)
            --if text:match("фывыфв") then
                if isPointOnScreen(posX, posY, posZ, 0.1) then
                    if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 5.0 then
                        --local convertX, convertY = convert3DCoordsToScreen(posX, posY, posZ)
                        --renderFontDrawText(my_font, "ХУЙ", convertX, convertY, 0xFFFFFFFF)
                        sampAddChatMessage(text, -1)
                        wait(50)
                    end
                end
            --end
        end
    end
end
покажи какой текст
 

Fasmin

Участник
Автор темы
175
6
покажи какой текст

любой текст который прикреплен к педу или машине, он не перехватывается
 

kyrtion

Известный
983
355
Lua:
local sampev = require 'samp.events'

local labels = {}

local function renderInLoop()
    for id, label in pairs(labels)
        -- code...
        -- label.text - выводит текст
        -- label.id - выводит ид лабела
        -- label.position.x = выводит координаты на x
    end
end

function main()
    repeat wait(0) until isSampAvailable()
    print('Hey!')
    while true do
        wait(0)
        if #labels ~= 0 then renderInLoop() end
    end
end

-- {'onCreate3DText', {id = 'uint16'}, {color = 'int32'}, {position = 'vector3d'},
-- {distance = 'float'}, {testLOS = 'bool8'}, {attachedPlayerId = 'uint16'},
-- {attachedVehicleId = 'uint16'}, {text = 'encodedString4096'}}
-- при появлении 3д текст в стриме
function sampev.onCreate3DText(id, color, position, distance, testLOS, attPlayerId, attVehicleId, text)
    print('Created3DTextLabel: ', id, color, position, distance, testLOS, attPlayerId, attVehicleId, text)
    labels[id] = {
        id = id,
        color = color,
        position = position,
        distance = distance,
        testLOS = testLOS,
        attPlayerId = attPlayerId,
        attVehicleId = attVehicleId,
        text = text,
    }
end

-- {'onTextDrawSetString', {id = 'uint16'}, {text = 'string16'}}
-- при обновлении строка
function sampev.onTextDrawSetString(id, newText)
    if labels[id] then
        local fmt = string.format(
            'Updated new text in labels[%d].\nOld: %s\nNew: %s',
            labelId, labels[id].text, newText
        )
        print(fmt)
        labels[id].text = newText
    end
end

-- {'onRemove3DTextLabel', {textLabelId = 'uint16'}}
-- при удалении 3д текст в стриме
function sampev.onRemove3DTextLabel(id)
    if labels[id] then
        print('Removed3DTextLabel: ', id)
        table.remove(labels, id)
    end
end

Вставляешь в новом скрипте и узнаешь, почему там так получилось.
Потом указываешь проверка на добавление лабель в таблице, чтобы не было мусор в labels

Так я получаю вообще любой текст в радиусе, только на педах и машинах это не работает почему-то
1734273041645.png
 
Последнее редактирование: