Баг

William_Chkhalo

Участник
Автор темы
127
14
Версия MoonLoader
Другое
Всем привет. У меня баг. Должен выводится 3д текст над машиной, но не работает(
Код:
lua_thread.create(function()
    for _, handle in ipairs(getAllVehicles()) do
        if isCarOnScreen(handle) then
            myX, myY, myZ = getCharCoordinates(PLAYER_PED)
              carX, carY, carZ = getCarCoordinates(handle)
            X, Y = convert3DCoordsToScreen(carX, carY, carZ + 1)
            distance = getDistanceBetweenCoords3d(carX, carY, carZ, myX, myY, myZ)
            _, carId = sampGetVehicleIdByCarHandle(handle)
            carSpeed = getCarSpeed(handle)
            sampCreate3dText('ID: '.. carId ..' Скорость: '.. carSpeed ..'', 0xFFFFFFFF, carX, carY, carZ, 1000, false, -1, handle)
        end
    end
end)

Код:
stack traceback:
    ./carInfo.lua: in function <./carInfo.lua:4>
[20:54:57.977] * Script loaded: carInfo.lua
 

Maxim25012

Известный
279
101
Всем привет. У меня баг. Должен выводится 3д текст над машиной, но не работает(
Код:
lua_thread.create(function()
    for _, handle in ipairs(getAllVehicles()) do
        if isCarOnScreen(handle) then
            myX, myY, myZ = getCharCoordinates(PLAYER_PED)
              carX, carY, carZ = getCarCoordinates(handle)
            X, Y = convert3DCoordsToScreen(carX, carY, carZ + 1)
            distance = getDistanceBetweenCoords3d(carX, carY, carZ, myX, myY, myZ)
            _, carId = sampGetVehicleIdByCarHandle(handle)
            carSpeed = getCarSpeed(handle)
            sampCreate3dText('ID: '.. carId ..' Скорость: '.. carSpeed ..'', 0xFFFFFFFF, carX, carY, carZ, 1000, false, -1, handle)
        end
    end
end)

Код:
stack traceback:
    ./carInfo.lua: in function <./carInfo.lua:4>
[20:54:57.977] * Script loaded: carInfo.lua
Потому что ты используешь хэндл машины, а нужно использовать её самповский айди.
Так же координаты, которые данная функция берёт в качестве аргумента, если 3д-текст прикреплён к чему-то, – не координата самого 3д-текста, а смещение относительно позиции машины, поэтому в твоём случае нужно вместо carX, carY, и carZ вставить нули.
 

William_Chkhalo

Участник
Автор темы
127
14
Потому что ты используешь хэндл машины, а нужно использовать её самповский айди.
Так же координаты, которые данная функция берёт в качестве аргумента, если 3д-текст прикреплён к чему-то, – не координата самого 3д-текста, а смещение относительно позиции машины, поэтому в твоём случае нужно вместо carX, carY, и carZ вставить нули.
Не очень понял, можно готовый код пожалуйста?
 

William_Chkhalo

Участник
Автор темы
127
14
Lua:
local memory = require "memory"
local ffi = require "ffi"

lua_thread.create(function()
    for _, handle in ipairs(getAllVehicles()) do
        if isCarOnScreen(handle) then
            myX, myY, myZ = getCharCoordinates(PLAYER_PED)
              carX, carY, carZ = getCarCoordinates(handle)
            X, Y = convert3DCoordsToScreen(carX, carY, carZ + 1)
            distance = getDistanceBetweenCoords3d(carX, carY, carZ, myX, myY, myZ)
            _, carId = sampGetVehicleIdByCarHandle(handle)
            carSpeed = getCarSpeed(handle)
            sampCreate3dText('ID: '.. carId ..' Скорость: '.. carSpeed ..'', 0xFFFFFFFF, 0, 0, 0, 1000, false, -1, carId)
        end
    end
end)

Код:
[22:19:32.497] * Loading script: carInfo.lua
[22:19:32.498] [error] [carInfo.lua] ./carInfo.lua:13: attempt to call global 'sampCreate3dText' (a nil value)
stack traceback:
    ./carInfo.lua: in function <./carInfo.lua:4>
[22:19:32.498] * Script loaded: carInfo.lua

Я на мобилку делаю если чо
 

Hinаta

Известный
784
356
Lua:
local memory = require "memory"
local ffi = require "ffi"

lua_thread.create(function()
    for _, handle in ipairs(getAllVehicles()) do
        if isCarOnScreen(handle) then
            myX, myY, myZ = getCharCoordinates(PLAYER_PED)
              carX, carY, carZ = getCarCoordinates(handle)
            X, Y = convert3DCoordsToScreen(carX, carY, carZ + 1)
            distance = getDistanceBetweenCoords3d(carX, carY, carZ, myX, myY, myZ)
            _, carId = sampGetVehicleIdByCarHandle(handle)
            carSpeed = getCarSpeed(handle)
            sampCreate3dText('ID: '.. carId ..' Скорость: '.. carSpeed ..'', 0xFFFFFFFF, 0, 0, 0, 1000, false, -1, carId)
        end
    end
end)

Код:
[22:19:32.497] * Loading script: carInfo.lua
[22:19:32.498] [error] [carInfo.lua] ./carInfo.lua:13: attempt to call global 'sampCreate3dText' (a nil value)
stack traceback:
    ./carInfo.lua: in function <./carInfo.lua:4>
[22:19:32.498] * Script loaded: carInfo.lua
нет проверки на загруженность сампа, ты функцию вызываешь раньше, чем она инициализируется, по-моему
 

Maxim25012

Известный
279
101
Lua:
local memory = require "memory"
local ffi = require "ffi"

lua_thread.create(function()
    for _, handle in ipairs(getAllVehicles()) do
        if isCarOnScreen(handle) then
            myX, myY, myZ = getCharCoordinates(PLAYER_PED)
              carX, carY, carZ = getCarCoordinates(handle)
            X, Y = convert3DCoordsToScreen(carX, carY, carZ + 1)
            distance = getDistanceBetweenCoords3d(carX, carY, carZ, myX, myY, myZ)
            _, carId = sampGetVehicleIdByCarHandle(handle)
            carSpeed = getCarSpeed(handle)
            sampCreate3dText('ID: '.. carId ..' Скорость: '.. carSpeed ..'', 0xFFFFFFFF, 0, 0, 0, 1000, false, -1, carId)
        end
    end
end)

Код:
[22:19:32.497] * Loading script: carInfo.lua
[22:19:32.498] [error] [carInfo.lua] ./carInfo.lua:13: attempt to call global 'sampCreate3dText' (a nil value)
stack traceback:
    ./carInfo.lua: in function <./carInfo.lua:4>
[22:19:32.498] * Script loaded: carInfo.lua

Я на мобилку делаю если чо
Нужно сначала дождаться загрузки САМПа:
Lua:
while not isSampAvailable() do
    wait()
end
Перед циклом for вставь.