createObject

(^O_O^)

Активный
Автор темы
114
27
Версия MoonLoader
.026-beta
Мне нужно создать объект 16302 на координатах x10, y10, z10

И после пропажи его что бы объект удалялся :0

я пытался obj=createobject(16302, x10, y10, z10, 0, 0, 0) но у меня крашит
[ML] (error) Arz Helper: opcode '0107' call caused an unhandled exception
stack traceback:

[C]: in function 'createObject'

Lua:
     for _, v in pairs(getAllObjects()) do
    if isObjectOnScreen(v) then
        local result, oX, oY, oZ = getObjectCoordinates(v)
        local x1, y1 = convert3DCoordsToScreen(oX,oY,oZ)
        local objmodel = getObjectModel(v)
        local x2,y2,z2 = getCharCoordinates(PLAYER_PED)
        local x10, y10, z10 = convert3DCoordsToScreen(x2,y2,z2)
        
        distance = string.format("%.0f", getDistanceBetweenCoords3d(oX,oY,oZ, x2, y2, z2))
         --2358
        if objmodel == 2680 then renderFontDrawText(my_font, "{ff9008}~Объект~: {45ff08}["..objmodel.."]\n{08b9ff}Дистанция {FFFFFF}: {FFAAFF}"..distance, x1, y1, -1) renderDrawLine(x10, y10, x1, y1, 1.5, 0xFFD00000) end
 

Andrinall

Известный
700
518
local x10, y10, z10 = convert3DCoordsToScreen(x2,y2,z2)
Я ни на что не намекаю, но зачем ты пытался создать объект на экранных координатах?
У тебя z10 будет равно nil, к тому же функция createObject принимает 4 аргумента, а не 7
Object object = createObject(Model model, float atX, float atY, float atZ)

Если нужно спавнить объект перед собой - вот небольшая функция, переписанная с Pawn на Lua, взята из filterscript'a ospawner.pwn дефолтного сервака и немного переделана.
Lua:
function SpawnObject_InfrontOfPlayer(char_handle, model, distance, zrot)
    if not doesCharExist(char_handle) then return false end
    if model < 0 or model > 20000 then return false end

    local x, y, z = getCharCoordinates(char_handle)
    local angle = getCharHeading(char_handle)
     
    x = x + (distance * math.sin( math.rad( -angle ) ) )
    y = y + (distance * math.cos( math.rad( -angle ) ) )

    angle = angle + 90.0
    if angle > 360.0 then angle = angle - 360.0 end

    local object = createObject(model, x, y, z)
    if not object then return false end 
    setObjectHeading(object, (zrot ~= nil and zrot or angle))
    return true, object
end

Пример использования:
Lua:
local result, object = SpawnObject_InfrontOfPlayer(PLAYER_PED, 2040, 5.0)
-- заспавнит перед персонажем игрока объект ID 2040 на дистанции 5.0 поперёк направления поворота персонажа(какой-то бред но да)

local result, object = SpawnObject_InfrontOfPlayer(PLAYER_PED, 2040, 5.0, 45.0)
-- заспавнит перед персонажем игрока объект ID 2040 на дистанции 5.0 с поворотом 45 градусов
 
Последнее редактирование: