Lua:
for i = 1, #darkXs do
if i <= 5 then
local darkx, darky = sampTextdrawGetPos(darkXs[i].id)
local _, _, darksx, darksy = sampTextdrawGetBoxEnabledColorAndSize(darkXs[i].id)
local _, darkletY = sampTextdrawGetLetterSizeAndColor(darkXs[i].id)
local darkx2, darky2 = darkx - darksx, darkletY * 10 + 1
darkx = darkx + (darksx - darkx) + 2
darky = darky - 2.5
darkx2 = darkx2 - 3.9
darkx, darky = convertGameScreenCoordsToWindowScreenCoords(darkx, darky)
darkx2, darky2 = convertGameScreenCoordsToWindowScreenCoords(darkx2, darky2)
numbers[i] = { x1 = darkx, y1 = darky, x2 = darkx2, y2 = darky2 }
end
end
for k, v in pairs(dark_box_tds) do
local darkx, darky = sampTextdrawGetPos(v)
local _, _, darksx, darksy = sampTextdrawGetBoxEnabledColorAndSize(v)
local _, darkletY = sampTextdrawGetLetterSizeAndColor(v)
local darkx2, darky2 = darkx - darksx, darkletY * 10 + 1
darkx = darkx + (darksx - darkx) + 2
darky = darky - 2.5
darkx2 = darkx2 - 3.9
dark_numbers[k] = { id = v, x1 = darkx, y1 = darky, x2 = darkx2, y2 = darky2 }
end
Вроде как получше определяет высоту поLetterHeight (На 16:9 точно, на 4:3 надо дрыгать box_x = box_x + 3 на -4)
Lua:
function pisya()
local resX, resY = getScreenResolution()
local scaleX = resX / 640.0
local scaleY = resY / 448.0
for a = 0, 2308 do
if sampTextdrawIsExists(a) then
local text_td = sampTextdrawGetString(a)
if text_td == "usebox" or text_td == "LD_SPAC:white" then
local pos_x, pos_y = sampTextdrawGetPos(a)
if text_td == "usebox" then
--pos_x = pos_x - 1
pos_y = pos_y - 2
else
pos_x = pos_x - 1
pos_y = pos_y - 2
end
local align = sampTextdrawGetAlign(a)
local hasBox, boxColor, box_x, box_y = sampTextdrawGetBoxEnabledColorAndSize(a)
local pixelX = pos_x * scaleX
local pixelY = pos_y * scaleY
if text_td == "usebox" then
box_x = box_x + 3
box_y = box_y + 3
else
box_x = box_x + 1
end
local scaledBoxX = box_x * scaleX
local scaledBoxY = box_y * scaleX
local left, top, right, bottom
if align == 2 then
local halfWidth = scaledBoxY * 0.5
left = pixelX - halfWidth
right = pixelX + halfWidth
top = pixelY
bottom = pixelY + scaledBoxX
elseif align == 3 then
left = scaledBoxX
right = pixelX
top = pixelY
bottom = pixelY + scaledBoxY
else
left = pixelX
right = scaledBoxX
top = pixelY
bottom = pixelY + scaledBoxY
end
local width = right - left
local height = bottom - top
if width < 0 then
left = left + width
width = math.abs(width)
end
if height < 0 then
top = top + height
height = math.abs(height)
end
local renderColor = (text_td == "usebox") and 0xFFFF0000 or 0xFF00FF00
local letSizeX, letSizeY, _ = sampTextdrawGetLetterSizeAndColor(a)
if height == 0 then
height = letSizeY * 10 * scaleY
end
renderDrawBox(left, top, width, height, renderColor)
renderFontDrawText(font, tostring(a), left, top, 0xFFBEBEBE)
end
end
end
end