Проблема с onCreate3DText

fokichevskiy

Активный
Автор темы
122
26
Версия MoonLoader
.026-beta
Проблема с onCreate3DText
Пишу бота для фермы льна, который ищет 3д текст( textObject:find('test') ), и при находке в переменную ppos2 записывает позицию 3д текста, затем данную переменную использует функция камеры и бега. Но ищет 3д он только созданный( т.е. на другие такие же не реагирует ) и то, когда он подойдет к нему, я перезагружаю скрипты и он больше не идет к этому ново-созданному тексту. Как пофиксить данную проблему?
Код
Lua:
function ev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('Для сбора урожая') then
        ppos2.x = position.x
        ppos2.y = position.y
        ppos2.z = position.z
    end
end
 

Fott

Простреленный
3,446
2,309
Lua:
function runToPoint(tox, toy)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local angle = getHeadingFromVector2d(tox - x, toy - y)
    local xAngle = math.random(-50, 50)/100
    setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
    stopRun = false
    while getDistanceBetweenCoords2d(x, y, tox, toy) > 0.8 do
        setGameKeyState(1, -255)
        --setGameKeyState(16, 1)
        wait(1)
        x, y, z = getCharCoordinates(PLAYER_PED)
        angle = getHeadingFromVector2d(tox - x, toy - y)
        setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
        if stopRun then
            stopRun = false
            break
        end
    end
end
Lua:
function ev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('Для сбора урожая') then
        lua_thread.create(runToPoint(position.x, position.y))
    end
end
 
Последнее редактирование:

fokichevskiy

Активный
Автор темы
122
26
Lua:
function runToPoint(tox, toy)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local angle = getHeadingFromVector2d(tox - x, toy - y)
    local xAngle = math.random(-50, 50)/100
    setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
    stopRun = false
    while getDistanceBetweenCoords2d(x, y, tox, toy) > 0.8 do
        setGameKeyState(1, -255)
        --setGameKeyState(16, 1)
        wait(1)
        x, y, z = getCharCoordinates(PLAYER_PED)
        angle = getHeadingFromVector2d(tox - x, toy - y)
        setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
        if stopRun then
            stopRun = false
            break
        end
    end
end
Lua:
function ev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    if textObject:find('Для сбора урожая') and not thread then
        lua_thread.create(runToPoint(position.x, position.y))
    end
end
То есть вот так?
Lua:
 if botc[0] then
            function ev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
                if textObject:find('Для сбора урожая') and not thread then
                    lua_thread.create(runToPoint(position.x, position.y))
                end
            end
        end
 

Fott

Простреленный
3,446
2,309
То есть вот так?
Lua:
 if botc[0] then
            function ev.onCreate3DText(idObject, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
                if textObject:find('Для сбора урожая') and not thread then
                    lua_thread.create(runToPoint(position.x, position.y))
                end
            end
        end
нет
 

хромиус)

:steamhappy:
Друг
5,007
3,259
А как тогда вызвать поток?
1703954825331.png

после хука вызывать проверку
 

хромиус)

:steamhappy:
Друг
5,007
3,259
Я и без while true do пробовал, всё равно не работает
ну на кофейной гуще гадать никто не будет,вот тебе пример
Lua:
function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
    if bool[0] and text:find('nenenene') then
        print('found it')
    end
end
з.ы по факту у тебя должно было крашиться из-за этого(нету пробела)
1703957207851.png
 

kyrtion

Известный
683
251
бесперебойный цикл при появлении 3дтекст, щедро!
потом уйдет в пенсию из-за wait(0) с циклом в функции

такс, убедись что:
- botc равен имгуи значением на bool
- переменные thread откуда взялся? @FFot

если не смог ловить, узнаешь из-за чего. чаще проверяешь в консоле, скрипт крашнулся ли
а также добавить в print(text) чисто для теста при появлении. если там будут караулов, скорее всего у тебя скрипт установлен на кириллицы, а UTF-8
 

fokichevskiy

Активный
Автор темы
122
26
ну на кофейной гуще гадать никто не будет,вот тебе пример
Lua:
function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, text)
    if bool[0] and text:find('nenenene') then
        print('found it')
    end
end
з.ы по факту у тебя должно было крашиться из-за этого(нету пробела)
Посмотреть вложение 226615
Спасибо за пример, но куда его по сути вставить? Я попытался и как отдельную функцию сделать и в main вставил( и в while true do, который в main ), но ничего из этого не выводит в консоль 'found it'. ( если что в игре был 3д текст 'nenenene' )