Проблема с onCreate3DText

fokichevskiy

Известный
Автор темы
493
280
Версия 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,468
2,393
- переменные thread откуда взялся? @FFot
Это я хотел сделать ему планировщик, но подумал что сделает сам, проебался стереть забыл
потом уйдет в пенсии из-за wait(0) с циклом в функции
скрипт сразу умрет как прилетит 3д текст из-за wait вне мейна без потока
 
  • Нравится
Реакции: kyrtion

fokichevskiy

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

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

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

Это я хотел сделать ему планировщик, но подумал что сделает сам, проебался стереть забыл

скрипт сразу умрет как прилетит 3д текст из-за wait вне мейна без потока
Я пытался и с thread-ом и без него, не работало
 

kyrtion

Известный
1,168
428
событие onCreate3DText - триггерится в случае появлении 3дтекст в стриме

local botc = imgui.new.bool()
Пытался сделать проверку работы вообще чекбокса с sampaddchatmessage, но в чат ничего не писало
попробуй тогда:

Lua:
-- если у тебя самп событие на ev, меняй sampev на ev на функции
-- это вставить вне мейна. в теле скрипта, но не в мейн, не в фрейм!
function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    print('found 3dtext:', textObject) -- debug
    if botc[0] and textObject:find('nenenene') then
        print('found it')
    else
        print('botc[0] ==', botc[0])
    end
end
 

fokichevskiy

Известный
Автор темы
493
280
событие onCreate3DText - триггерится в случае появлении 3дтекст в стриме


попробуй тогда:

Lua:
-- если у тебя самп событие на ev, меняй sampev на ev на функции
-- это вставить вне мейна. в теле скрипта, но не в мейн, не в фрейм!
function sampev.onCreate3DText(id, color, position, distance, testLOS, attachedPlayerId, attachedVehicleId, textObject)
    print('found 3dtext:', textObject) -- debug
    if botc[0] and textObject:find('nenenene') then
        print('found it')
    else
        print('botc[0] ==', botc[0])
    end
end
Скрипт реагирует на 3д текст и выводит в консоль 'found it', но при попытке вызвать runToPoint, то персонаж поворачивает голову в сторону текста, но не идё т и скрипт крашит
Краш:
[ML] (script) Auto-Lien: found 3dtext:   nenenene
[ML] (error) Auto-Lien: C:\samp2\moonloader\albot.lua:74: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    C:\samp2\moonloader\albot.lua:74: in function 'runToPoint'
    C:\samp2\moonloader\albot.lua:58: in function 'callback'
    C:\samp2\moonloader\lib\samp\events\core.lua:79: in function <C:\samp2\moonloader\lib\samp\events\core.lua:53>
[ML] (script) Auto-Lien: found 3dtext:   da
[ML] (script) Auto-Lien: botc[0] ==   true
[ML] (error) Auto-Lien: Script died due to an error. (0C1A547C)

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
Использовал runToPoint по этому примеру в потоке
 

Fott

Простреленный
3,468
2,393
Скрипт реагирует на 3д текст и выводит в консоль 'found it', но при попытке вызвать runToPoint, то персонаж поворачивает голову в сторону текста, но не идё т и скрипт крашит
Краш:
[ML] (script) Auto-Lien: found 3dtext:   nenenene
[ML] (error) Auto-Lien: C:\samp2\moonloader\albot.lua:74: attempt to yield across C-call boundary
stack traceback:
    [C]: in function 'wait'
    C:\samp2\moonloader\albot.lua:74: in function 'runToPoint'
    C:\samp2\moonloader\albot.lua:58: in function 'callback'
    C:\samp2\moonloader\lib\samp\events\core.lua:79: in function <C:\samp2\moonloader\lib\samp\events\core.lua:53>
[ML] (script) Auto-Lien: found 3dtext:   da
[ML] (script) Auto-Lien: botc[0] ==   true
[ML] (error) Auto-Lien: Script died due to an error. (0C1A547C)


Использовал runToPoint по этому примеру в потоке
ты через lua_thread.create вызываешь?