Помогите дописать скрипт который реагирует на 3д текст

SER1KE

Новичок
Автор темы
3
0
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        for i=0, 5000 do
            if sampIs3dTextDefined(i) then
               text, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(i)
               if text:match('Для въезда в гараж') then
                    setVirtualKeyDown(72, true)
                    wait(10)
                    setVirtualKeyDown(72, false)
                end
            end
        end
    end
end



что в этом скрипте не так, просто он не работает, помогите пожалуйста его доделать

Суть скрипта в том, что при виде 3д текста он нажимал на клавишу "h"
"если можно то активация при вводе команды в чат"
 
Последнее редактирование модератором:

kyrtion

Известный
665
245
Lua:
local function getInfo3dTextById(id)
    if not sampIs3dTextDefined(id) then return nil end
    local s3dtext = { sampGet3dTextInfoById(id) }
    local list = {
        text = s3dtext[1], -- string
        color = s3dtext[2], -- int
        pos = { -- table
            x = s3dtext[3], -- float
            y = s3dtext[3], -- float
            z = s3dtext[3] -- float
        },
        distance = s3dtext[3], -- float
        ignoreWalls = s3dtext[3], -- bool
        playerId = s3dtext[3], -- int
        vehicleId = s3dtext[3] -- int
    }
    return list
end

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        for id = 0, 5000 do
            local info = getInfo3dTextById(id)
            if info and info.text:find('Для въезда в гараж') then
                setVirtualKeyDown(72, true)
                wait(10)
                setVirtualKeyDown(72, false)
            end
        end
    end
end
 

wojciech?

Известный
219
130
Lua:
local function getInfo3dTextById(id)
    if not sampIs3dTextDefined(id) then return nil end
    local s3dtext = { sampGet3dTextInfoById(id) }
    local list = {
        text = s3dtext[1], -- string
        color = s3dtext[2], -- int
        pos = { -- table
            x = s3dtext[3], -- float
            y = s3dtext[3], -- float
            z = s3dtext[3] -- float
        },
        distance = s3dtext[3], -- float
        ignoreWalls = s3dtext[3], -- bool
        playerId = s3dtext[3], -- int
        vehicleId = s3dtext[3] -- int
    }
    return list
end

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        for id = 0, 5000 do
            local info = getInfo3dTextById(id)
            if info and info.text:find('Для въезда в гараж') then
                setVirtualKeyDown(72, true)
                wait(10)
                setVirtualKeyDown(72, false)
            end
        end
    end
end
В таблице list забыл корректно прописать индексы у s3dtext (все после 3 почему-то тоже 3). И стоит проверять дистанцию между локальным игроком и этим текстом, сейчас он у тебя будет спамить кнопкой, пока текст находится в зоне стрима
 

kyrtion

Известный
665
245
В таблице list забыл корректно прописать индексы у s3dtext (все после 3 почему-то тоже 3). И стоит проверять дистанцию между локальным игроком и этим текстом, сейчас он у тебя будет спамить кнопкой, пока текст находится в зоне стрима
ну бля, ты конечно упоминал, спасибо.
как раз поправлю

Lua:
local function getInfo3dTextById(id)
    if not sampIs3dTextDefined(id) then return nil end
    local s3dtext = { sampGet3dTextInfoById(id) }
    local list = {
        text = s3dtext[1], -- string
        color = s3dtext[2], -- int
        pos = { -- table
            x = s3dtext[3], -- float
            y = s3dtext[4], -- float
            z = s3dtext[5] -- float
        },
        distance = s3dtext[6], -- float
        ignoreWalls = s3dtext[7], -- bool
        playerId = s3dtext[8], -- int
        vehicleId = s3dtext[9] -- int
    }
    return list
end

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        for id = 0, 5000 do
            local info = getInfo3dTextById(id)
            if info and (info.text:find('Для въезда в гараж') and info.distance <= 4) then
                setVirtualKeyDown(72, true)
                wait(10)
                setVirtualKeyDown(72, false)
            end
        end
    end
end
 

SER1KE

Новичок
Автор темы
3
0
1698774182600.png
Вот я приезжаю сюда а он не нажимает(
 

NEDE7U

Участник
70
19
ну бля, ты конечно упоминал, спасибо.
как раз поправлю

Lua:
local function getInfo3dTextById(id)
    if not sampIs3dTextDefined(id) then return nil end
    local s3dtext = { sampGet3dTextInfoById(id) }
    local list = {
        text = s3dtext[1], -- string
        color = s3dtext[2], -- int
        pos = { -- table
            x = s3dtext[3], -- float
            y = s3dtext[4], -- float
            z = s3dtext[5] -- float
        },
        distance = s3dtext[6], -- float
        ignoreWalls = s3dtext[7], -- bool
        playerId = s3dtext[8], -- int
        vehicleId = s3dtext[9] -- int
    }
    return list
end

function main()
    repeat wait(0) until isSampAvailable()
    while true do wait(0)
        for id = 0, 5000 do
            local info = getInfo3dTextById(id)
            if info and (info.text:find('Для въезда в гараж') and info.distance <= 4) then
                setVirtualKeyDown(72, true)
                wait(10)
                setVirtualKeyDown(72, false)
            end
        end
    end
end
Лучше реализовать через samp.events. Если не ошибаюсь, там есть отлов 3D текста. А постоянная проверка, это -фпс из за скрипта))

Лучше реализовать через samp.events. Если не ошибаюсь, там есть отлов 3D текста. А постоянная проверка, это -фпс из за скрипта))
К тому же цикл....
 

wojciech?

Известный
219
130
А постоянная проверка, это -фпс из за скрипта))
в событии максимум можно получить ид и позиции этих текстдравов, проверять расстояние и необходимость нажать кнопку в любом случае в цикле надо
 

SER1KE

Новичок
Автор темы
3
0
Я или не догоняю или че, я делаю файл.lua закидую туда скрипт а он не работает что за бред, если можете то скиньте именно файл скрипта

Вот смотрите, этот скрипт рендерить 3д текст, он его рендерит даже если там написано 1 слово или 1 буква, я так предполагаю, что скрипт который вы мне скинули, просто не видит 3д текст, а тот 3д текст который мне в 2 строчки, скрин кидал выше, ну так вот, если вы можете что то с этим поделать, то пожалуйста заделайте, и желательно активацию по команде в чат
 

Вложения

  • 3dtextwh3.0.lua
    11 KB · Просмотры: 6
Последнее редактирование: