Длинна текста

Tema05

Известный
Автор темы
1,442
401
Версия MoonLoader
.026-beta
Как можно узнать длину текста, который рендерится через стандартную функцию сампа?
Lua:
local DrawText = ffi.cast('void(__thiscall*)(void*, void*, const char*, long, long, long, long, unsigned long, bool)', getModuleHandle('samp.dll') + 0x6ABF0)

function onD3DPresent()
    if isSampAvailable() then
        local pFonts = ffi.cast('void*', memory.getuint32(getModuleHandle('samp.dll') + 0x26E8E4))
        DrawText(pFonts, nil, 'Текст', 0, 0, 0, 0, 0xFFFFFFFF, true)
    end
end
 

Tema05

Известный
Автор темы
1,442
401
Кому лень доставать под R3

Lua:
local length = ffi.cast('void(__thiscall*)(void*, unsigned int*, const char*, int)', getModuleHandle('samp.dll') + 0x6AA90)
local font = ffi.cast('void*', memory.getuint32(getModuleHandle('samp.dll') + 0x26E8E4))

local size = ffi.new('unsigned int[1]', 0)
length(font, size, 'Текст', 1)
print(size[0]) -- ширина текста

-- Высота если кому надо:
print(memory.getuint32(memory.getuint32(getModuleHandle('samp.dll') + 0x26E8E4) + 0x20))

Почему-то при перезагрузке с скрипта с этой инициализированной функцией и при наличии события onD3DPresent в скрипте вся сессия умирает с варнингом.
 
Последнее редактирование: