клик по текстдраву с проверкой по размеру

iOS

Активный
Автор темы
131
29
Версия MoonLoader
.026-beta
как известно, айдишники текстдравов на аризоне живут своей жизнью, дабы решить эту проблему сделал проверку по размеру и тексту
написал для этого следующую штуку:
local sampev = require('lib.samp.events')
require('lib.moonloader')
function main()
    while not isSampAvailable() do wait(0) end
    while true do wait(0) end
end

function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..xsize, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
        if xsize == 7.0064923216241e-45 and ysize == 500 and drawcolor == 4292993505 then
            sampSendClickTextdraw(idraw)
        end
end

--[[  Новый текстдрав

 Ид текстдрава: 705

 Размер по иксу: 7.0064923216241e-45

 Размер по игрику: 500

 Цвет: 4292993505 ]]
но вот что-то не работает , в чем причина?
1705310525601.png

на тринити зашел для примера
 
Решение
ты об этом?:
function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    xsize = math.floor(xsize)
    ysize = math.floor(ysize)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..xsize, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
    if xsize == 7 and ysize == 500 then
        sampAddChatMessage('НАШЕЛ!!!', -1)
        sampSendClickTextdraw(idraw)
    end
end
если так делаю, то он почему-то в 0 все превращает
a если получать через структуру onShowTextdraw ? а именно:
Lua:
INCOMING_RPCS[RPC.SHOWTEXTDRAW] =...

iOS

Активный
Автор темы
131
29
Округляй координаты текстдравов через math.floor,тогда проверка прокатит
ты об этом?:
function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    xsize = math.floor(xsize)
    ysize = math.floor(ysize)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..xsize, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
    if xsize == 7 and ysize == 500 then
        sampAddChatMessage('НАШЕЛ!!!', -1)
        sampSendClickTextdraw(idraw)
    end
end
если так делаю, то он почему-то в 0 все превращает
 

ChromiusJ

Известный
Друг
4,898
3,184
ты об этом?:
function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    xsize = math.floor(xsize)
    ysize = math.floor(ysize)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..xsize, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
    if xsize == 7 and ysize == 500 then
        sampAddChatMessage('НАШЕЛ!!!', -1)
        sampSendClickTextdraw(idraw)
    end
end
если так делаю, то он почему-то в 0 все превращает
a если получать через структуру onShowTextdraw ? а именно:
Lua:
INCOMING_RPCS[RPC.SHOWTEXTDRAW] = {'onShowTextDraw',
  {textdrawId = 'uint16'},
  {textdraw = {
    {flags = 'uint8'},
    {letterWidth = 'float'},
    {letterHeight = 'float'},
    {letterColor = 'int32'},
    {lineWidth = 'float'},
    {lineHeight = 'float'},
    {boxColor = 'int32'},
    {shadow = 'uint8'},
    {outline = 'uint8'},
    {backgroundColor = 'int32'},
    {style = 'uint8'},
    {selectable = 'uint8'},
    {position = 'vector2d'},
    {modelId = 'uint16'},
    {rotation = 'vector3d'},
    {zoom = 'float'},
    {color1 = 'int16'},
    {color2 = 'int16'},
    {text = 'string16'}
  }}
}
 

Fott

Простреленный
3,431
2,270
Округляй координаты текстдравов через math.floor,тогда проверка прокатит
И нахуя тогда такая проверка. Если у нас есть координаты 1.1487374 или 1.90909 оно всегда сделает 1
Если и округлять, то к тысячным, или больше
Lua:
function round(number)
    return math.floor(number * 1000 + 0.5) / 1000 -- округляем к тысячным
end
local a = 1.45678
print(round(a))
> 1.457
 
Последнее редактирование:

iOS

Активный
Автор темы
131
29
И нахуя тогда такая проверка. Если у нас есть координаты 1.1487374 или 1.90909 оно всегда сделает 1
Если и округлять, то к тысячным, или больше
Lua:
function round(number)
    return math.floor(number * 1000 + 0.5) / 1000 -- округляем к тысячным
end
local a = 1.45678
print(round(a))
> 1.457
Lua:
function round(number)
    return math.floor(number * 1000 + 0.5) / 1000 -- округляем к тысячным
end
function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    local sizex = round(xsize)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..sizex, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
    if xsize == 7 and ysize == 500 then
        sampAddChatMessage('НАШЕЛ!!!', -1)
        sampSendClickTextdraw(idraw)
    end
end
1705392317351.png

😭
 

Adrian G.

Известный
Проверенный
521
453
Lua:
function round(number)
    return math.floor(number * 1000 + 0.5) / 1000 -- округляем к тысячным
end
function sampev.onShowTextDraw(idraw, data)
    xsize, ysize, drawcolor = sampTextdrawGetLetterSizeAndColor(idraw)
    local sizex = round(xsize)
    sampAddChatMessage('Новый текстдрав', 0xFF0000)
    sampAddChatMessage('Ид текстдрава: '..idraw,-1)
    sampAddChatMessage('Размер по иксу: '..sizex, -1)
    sampAddChatMessage('Размер по игрику: '..ysize, -1)
    sampAddChatMessage('Цвет: '..drawcolor, -1)
    if xsize == 7 and ysize == 500 then
        sampAddChatMessage('НАШЕЛ!!!', -1)
        sampSendClickTextdraw(idraw)
    end
end
Посмотреть вложение 229008
😭
Значит используй инфу о текстдраве из хука, которую скинули выше. Видать sampTextdrawGetLetterSizeAndColor отрабатывает раньше, чем текстдрав нарисуется, поэтому возвращает 0.
 
  • Нравится
Реакции: Fott