Помощь с поиском 3D Texta

.Freeze

Участник
Автор темы
42
3
Версия MoonLoader
.027.0-preview
Добрый день дорогие все форумные люди, сегодня столкнулся с такой проблемой хотел сделать Render Линий и текста на текст, но есть одна загвостка.
Мне надо только чтобы рендарилось на эту ферму а на другую не надо, есть какое нибудь решение нижу приложу код.
1661076721507.png


lua:
local ev = require 'lib.samp.events'

function main()
    sampAddChatMessage('Fermer Bot | Успешно загружен!',-1)
    sampRegisterChatCommand('fermer',command_state)
    while true do wait(0)

        if state then
            for id = 0, 2048 do
                if sampIs3dTextDefined(id) then
                    local text, color, posX, posY, posZ, distance, ignoreWalls, player, vehicle = sampGet3dTextInfoById(id)
                    if text:find("можно собрать") then
                        if isPointOnScreen(posX, posY, posZ, 1) then
                            local x, y, z = getCharCoordinates(1)
                            local xx, yy = convert3DCoordsToScreen(x, y, z)
                            local px, py = convert3DCoordsToScreen(posX, posY, posZ)
                            renderDrawLine(xx, yy, px, py, 3, 0xff4343c9)
                        end
                    end
                end
            end
        end

    end
end

function command_state()
    state = not state

    if state then
        
    else

    end
end
 

ARMOR

kjor32 is legend
Модератор
4,843
6,061
Я бы сказал делать проверку на нужный объект ( куст ) И если модель объекта равна той которая тебе нужна - рендерить к ней линию, а проверку делать на нахождение в нужной точке через https://wiki.blast.hk/ru/moonloader/lua/isObjectInArea3d ( Не сильно шарю в ваших этих рендерах, но я бы пробывал сделать так )
 
  • Нравится
Реакции: why ega

.Freeze

Участник
Автор темы
42
3
Я бы сказал делать проверку на нужный объект ( куст ) И если модель объекта равна той которая тебе нужна - рендерить к ней линию, а проверку делать на нахождение в нужной точке через https://wiki.blast.hk/ru/moonloader/lua/isObjectInArea3d ( Не сильно шарю в ваших этих рендерах, но я бы пробывал сделать так )
Сори но мне надо только на текс проверку, потому-что там кусты каждый раз разные, help!!
 

:re

Участник
32
10
Я бы сказал делать проверку на нужный объект ( куст ) И если модель объекта равна той которая тебе нужна - рендерить к ней линию, а проверку делать на нахождение в нужной точке через https://wiki.blast.hk/ru/moonloader/lua/isObjectInArea3d ( Не сильно шарю в ваших этих рендерах, но я бы пробывал сделать так )
Можно сделать проще, проверку по координате текста, если она не превышает какое - то значение, то рисовать линию
 

.Freeze

Участник
Автор темы
42
3
Можно сделать проще, проверку по координате текста, если она не превышает какое - то значение, то рисовать линию
Да хочу типо-такого но незнаю функция можешь скинуть сниппет?
 

:re

Участник
32
10
Да хочу типо-такого но незнаю функция можешь скинуть сниппет?
У тебя в коде есть эта строчка
Lua:
local text, color, posX, posY, posZ, distance, ignoreWalls, player, vehicle = sampGet3dTextInfoById(id)
Просто добавь проверку перед рисованием текста, к примеру можно использовать переменные posX или distance, координаты сам поставишь
Lua:
if posX < 1 then -- Вместо 1 поставишь свое значение
-- Тут рисуй линии
end

-- Или можно сделать так

if distance < 20 then -- Сам подбери цифру, экспериментируй
-- Аналогично
end

Координату для переменной posX можешь взять к примеру у забора, просто подойди к нему и используй функцию - getCharCoordinates
 

.Freeze

Участник
Автор темы
42
3
У тебя в коде есть эта строчка
Lua:
local text, color, posX, posY, posZ, distance, ignoreWalls, player, vehicle = sampGet3dTextInfoById(id)
Просто добавь проверку перед рисованием текста, к примеру можно использовать переменные posX или distance, координаты сам поставишь
Lua:
if posX < 1 then -- Вместо 1 поставишь свое значение
-- Тут рисуй линии
end

-- Или можно сделать так

if distance < 20 then -- Сам подбери цифру, экспериментируй
-- Аналогично
end

Координату для переменной posX можешь взять к примеру у забора, просто подойди к нему и используй функцию - getCharCoordinates
Не работает, как можно эти кординаты приоброзовать в игровые?
 

why ega

РП игрок
Модератор
2,540
2,224
Добрый день дорогие все форумные люди, сегодня столкнулся с такой проблемой хотел сделать Render Линий и текста на текст, но есть одна загвостка.
Мне надо только чтобы рендарилось на эту ферму а на другую не надо, есть какое нибудь решение нижу приложу код.
Посмотреть вложение 164075

lua:
local ev = require 'lib.samp.events'

function main()
    sampAddChatMessage('Fermer Bot | Успешно загружен!',-1)
    sampRegisterChatCommand('fermer',command_state)
    while true do wait(0)

        if state then
            for id = 0, 2048 do
                if sampIs3dTextDefined(id) then
                    local text, color, posX, posY, posZ, distance, ignoreWalls, player, vehicle = sampGet3dTextInfoById(id)
                    if text:find("можно собрать") then
                        if isPointOnScreen(posX, posY, posZ, 1) then
                            local x, y, z = getCharCoordinates(1)
                            local xx, yy = convert3DCoordsToScreen(x, y, z)
                            local px, py = convert3DCoordsToScreen(posX, posY, posZ)
                            renderDrawLine(xx, yy, px, py, 3, 0xff4343c9)
                        end
                    end
                end
            end
        end

    end
end

function command_state()
    state = not state

    if state then
       
    else

    end
end
Сделай проверку на нахождение перса в определенном 3d кубе, если перс находится на них (на определенной ферме), то рендерить что те нужно


У тебя в коде есть эта строчка
Lua:
local text, color, posX, posY, posZ, distance, ignoreWalls, player, vehicle = sampGet3dTextInfoById(id)
Просто добавь проверку перед рисованием текста, к примеру можно использовать переменные posX или distance, координаты сам поставишь
Lua:
if posX < 1 then -- Вместо 1 поставишь свое значение
-- Тут рисуй линии
end

-- Или можно сделать так

if distance < 20 then -- Сам подбери цифру, экспериментируй
-- Аналогично
end

Координату для переменной posX можешь взять к примеру у забора, просто подойди к нему и используй функцию - getCharCoordinates
Не играл особо на Аризоне, но разве 3д текст не будет одинаковый на обеих фермах?
 

.Freeze

Участник
Автор темы
42
3
Сделай проверку на нахождение перса в определенном 3d кубе, если перс находится на них (на определенной ферме), то рендерить что те нужно



Не играл особо на Аризоне, но разве 3д текст не будет одинаковый на обеих фермах?
Я пытался что бы он пропускал те 3d тексты по ихнему id, но когда перезаходишь в стрим их id меняется каждый раз, и да тексты там одинаковые но мне надо чтобы только на этой ферме показывались, help!!!
 

.Freeze

Участник
Автор темы
42
3
Сделай проверку на нахождение перса в определенном 3d кубе, если перс находится на них (на определенной ферме), то рендерить что те нужно



Не играл особо на Аризоне, но разве 3д текст не будет одинаковый на обеих фермах?
Так проверка бесполезная, я сделал куб, перс находится в этом куби но... Всё серовно рендарится, когда выхожу с куба нечего не рендарится, это не так работает...
 

:re

Участник
32
10
Сделай проверку на нахождение перса в определенном 3d кубе, если перс находится на них (на определенной ферме), то рендерить что те нужно



Не играл особо на Аризоне, но разве 3д текст не будет одинаковый на обеих фермах?
Текст одинаковый, а позиция нет