- 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
И я пытался исправить это и следовать ему. Это не работает.
Может кто-нибудь мне помочь? Спасибо)
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