Получите позицию 3DText в радиусе 10 метров. HELP

saradaken

Участник
Автор темы
47
6
Версия MoonLoader
Другое
Hello, how can I get the 3dtext position value within the screen range?
When found within range, set the language translation condition. If it is within range, it will translate. If it is out of range, it will not translate. Until it is within the screen range.
I saw this https://www.blast.hk/threads/65397/post-575630
And I tried to fix it and follow it. It doesn't work.
Can someone please help me? Thanks)
Здравствуйте, как мне получить значение позиции 3dtext в пределах диапазона экрана?
При обнаружении в пределах диапазона задайте условие перевода языка. Если он в пределах диапазона, он будет переведен. Если он вне диапазона, он не будет переведен. Пока он не будет в пределах диапазона экрана.
Я видел это https://www.blast.hk/threads/65397/post-575630
И я пытался исправить это и следовать ему. Это не работает.
Может кто-нибудь мне помочь? Спасибо)


Lua:
function q.onCreate3DText(id, color, position, dist, testLOS, attachedPlayerId, attachedVehicleId, text)
    if itdtext.v then
        local res, i = getNear3dtextToCenter(1)
        if res then
            if translatedCache[text] then
                text = translatedCache[text]
            else
                local originalText = text
                if not translatedCache then
                    translatedCache = {} 
                    loadCache()         
                end
                if translatedCache[originalText] then
                    text = translatedCache[originalText]
                else
                    enqueueTranslation(originalText, false, function(otext)
                        if otext then
                            translatedCache[originalText] = otext
                            saveCache()  -
                            text = otext
                            if sampIs3dTextDefined(id) then
                                local info = {sampGet3dTextInfoById(id)}
                                if #info >= 9 then
                                    local bs = raknetNewBitStream()
                                    raknetBitStreamWriteInt16(bs, id)
                                    raknetBitStreamWriteInt32(bs, color)
                                    raknetBitStreamWriteFloat(bs, info[3]) -- x
                                    raknetBitStreamWriteFloat(bs, info[4]) -- y
                                    raknetBitStreamWriteFloat(bs, info[5]) -- z
                                    raknetBitStreamWriteFloat(bs, info[6]) -- distance
                                    raknetBitStreamWriteInt8(bs, info[7])  -- walls
                                    raknetBitStreamWriteInt16(bs, info[8]) -- playerid
                                    raknetBitStreamWriteInt16(bs, info[9]) -- vehicleid
                                    raknetBitStreamEncodeString(bs, text)
                                    raknetEmulRpcReceiveBitStream(36, bs)
                                    raknetDeleteBitStream(bs)
                                end
                            end
                        end
                    end)
                end
            end
        end
    end
    
    return {id, color, position, dist, testLOS, attachedPlayerId, attachedVehicleId, text}
end

function getNear3dtextToCenter(maxDist)
    local sx, sy = getScreenResolution()
    local midX, midY = sx / 2, sy / 2
    local t = {}

    for i = 0, 2048 do
        if sampIs3dTextDefined(i) then
            local textId, x, y, z = sampGet3dTextInfoById(i)
            local myX, myY, myZ = getCharCoordinates(playerPed)
            local cX, cY = convert3DCoordsToScreen(x, y, z)
            local dist = getDistanceBetweenCoords2d(midX, midY, cX, cY)
            local distBtwCar = getDistanceBetweenCoords3d(x, y, z, myX, myY, myZ)     
            if distBtwCar <= tonumber(maxDist) then
                table.insert(t, {dist, textId})
            end
        end
    end
    
    if #t > 0 then
        local minDist = t[1][1]
        for i = 1, #t do
            if t[i][1] < minDist then
                minDist = t[i][1]
                nearestTextId = t[i][2]  -- เก็บ ID ของ 3D text ที่ใกล้ที่สุด
            end
        end
        return true, nearestTextId
    end
    return false
end