Jump to content

Some vehicles "engineRequestModel" features


Recommended Posts

Hello everyone, sorry if my english bad.

I did a script that allows to use new models throw the "engineRequestModel". It works good for replace, but I found some problems.

First, I thought that if I use a parent ID from car with sirens, it will apply sirens on changed model. It didn't - so I tried to use addVehicleSirens(). It didn't work too - I have only a sound of sirens, but not them visual. On base non-changed models it works okay. I tried to set their positions on server and on client side, and set flag360 = true and checkLosFlag = false, but it still didn't help. Any ideas about fix that (except creating new sirens system)?

Second, on new models doesn't work "up" and "down" abilities (dozer, towtruck, forklift etc.). Is any way to fix that?

P.S. I understood that new models have new ID's, but I still need to fix this problems. Thanks in advance!

  • Sad 1
Link to comment
1 hour ago, DarkStalker30 said:

Hello everyone, sorry if my english bad.

I did a script that allows to use new models throw the "engineRequestModel". It works good for replace, but I found some problems.

First, I thought that if I use a parent ID from car with sirens, it will apply sirens on changed model. It didn't - so I tried to use addVehicleSirens(). It didn't work too - I have only a sound of sirens, but not them visual. On base non-changed models it works okay. I tried to set their positions on server and on client side, and set flag360 = true and checkLosFlag = false, but it still didn't help. Any ideas about fix that (except creating new sirens system)?

Second, on new models doesn't work "up" and "down" abilities (dozer, towtruck, forklift etc.). Is any way to fix that?

P.S. I understood that new models have new ID's, but I still need to fix this problems. Thanks in advance!

давай тоже самое, но на русском

Link to comment
7 minutes ago, AngelAlpha said:

давай тоже самое, но на русском

Без проблем.

Есть engineRequestModel, использую его для создания нового транспорта на основе старого. У таких моделей две проблемы:

1) Сирены автоматически не добавляются от модели-родителя, через addVehicleSirens() тоже не хотят нормально работать, у них есть только звук. Проверял на базовых моделях - функция работает на сервере. Ставил flag360 = true и checkLosFlag = false, применял сирены на стороне сервера и стороне клиента - всё равно не помогло. Есть ли вариант как-то всё-таки выставить их (без какой-либо новописной системы)?

2) При добавлении нового транспорта у него не работает по умолчанию тягание всяких частей кузова (эвакуатор, бульдозер, погрузчик и т.д.). Можно ли это как-то реализовать?
Спасибо :)

Link to comment
Just now, DarkStalker30 said:

Без проблем.

Есть engineRequestModel, использую его для создания нового транспорта на основе старого. У таких моделей две проблемы:

1) Сирены автоматически не добавляются от модели-родителя, через addVehicleSirens() тоже не хотят нормально работать, у них есть только звук. Проверял на базовых моделях - функция работает на сервере. Ставил flag360 = true и checkLosFlag = false, применял сирены на стороне сервера и стороне клиента - всё равно не помогло. Есть ли вариант как-то всё-таки выставить их (без какой-либо новописной системы)?

2) При добавлении нового транспорта у него не работает по умолчанию тягание всяких частей кузова (эвакуатор, бульдозер, погрузчик и т.д.). Можно ли это как-то реализовать?
Спасибо :)

1) Может ты координаты не правильно прописал? Покажи код как ты прописываешь
2) Ты точно при добавлении например нового эвакуатора, за базовый ID берешь ID старого (525)?

Link to comment
9 minutes ago, IIYAMA said:

@AngelAlpha@DarkStalker30

Gentlemen, the primary language for this forum section is English. Please write your posts and replies in English. 👋

Yep, sorry. He just asks me for write original post on russian.

His answer:

Quote

1) Maybe wrong coordinates? Show the code.
2) When adding, for example, a new tow truck, are you sure you take the ID of the old one (525) as the base ID?

 

24 minutes ago, AngelAlpha said:

1) Может ты координаты не правильно прописал? Покажи код как ты прописываешь
2) Ты точно при добавлении например нового эвакуатора, за базовый ID берешь ID старого (525)?

1) 409 - work, "new_car" - don't.

local vehicleSirens = {
    ["new_car"] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }},
    [409] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }}
}

function setSomeCoolThingsForVehicle(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

2)

["new_tt"] = {modelName = "towtruck2", parentID = 525, currentID = nil}

 

  • Like 1
Link to comment
10 minutes ago, DarkStalker30 said:

Yep, sorry. He just asks me for write original post on russian.

His answer:

 

1) 409 - work, "new_car" - don't.

local vehicleSirens = {
    ["new_car"] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }},
    [409] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }}
}

function setSomeCoolThingsForVehicle(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

2)

["new_tt"] = {modelName = "towtruck2", parentID = 525, currentID = nil}

 

Как ты заменяешь модель, покажи код
How you replace a model, show me code

26 minutes ago, IIYAMA said:

@AngelAlpha@DarkStalker30

Gentlemen, the primary language for this forum section is English. Please write your posts and replies in English. 👋

may be you can move this topic to russian subforum?

Link to comment
Just now, AngelAlpha said:

Как ты заменяешь модель, покажи код
How you replace a model, show me code

local modelTable = newModelsTable[newModelName]
    if modelTable then
        if modelTable.currentID == nil then
            modelTable.currentID = engineRequestModel("vehicle", modelTable.parentID)
            local txd = engineLoadTXD("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".txd")
            engineImportTXD(txd, modelTable.currentID)
            local dff = engineLoadDFF("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".dff")
            engineReplaceModel(dff, modelTable.currentID)
        elseif getElementModel(source) == modelTable.currentID then
            return
        end
        setElementModel(source, modelTable.currentID)
        outputDebugString('Модели "'..modelTable.modelName..'" присвоен ID: ' ..modelTable.currentID)
 	end

 

Link to comment
2 minutes ago, DarkStalker30 said:
local modelTable = newModelsTable[newModelName]
    if modelTable then
        if modelTable.currentID == nil then
            modelTable.currentID = engineRequestModel("vehicle", modelTable.parentID)
            local txd = engineLoadTXD("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".txd")
            engineImportTXD(txd, modelTable.currentID)
            local dff = engineLoadDFF("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".dff")
            engineReplaceModel(dff, modelTable.currentID)
        elseif getElementModel(source) == modelTable.currentID then
            return
        end
        setElementModel(source, modelTable.currentID)
        outputDebugString('Модели "'..modelTable.modelName..'" присвоен ID: ' ..modelTable.currentID)
 	end

 

local modelTable = newModelsTable[newModelName]
if modelTable then
  if modelTable.currentID == nil then
    modelTable.currentID = engineRequestModel("vehicle", modelTable.parentID)
    local txd = engineLoadTXD("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".txd")
    engineImportTXD(txd, modelTable.currentID)
    local dff = engineLoadDFF("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".dff")
    engineReplaceModel(dff, modelTable.currentID)
  elseif getElementModel(source) == modelTable.currentID then
    return
  end
  setElementModel(source, modelTable.currentID)
  setElementData(source, "newModelName", newModelName)
  outputDebugString('Модели "'..modelTable.modelName..'" присвоен ID: ' ..modelTable.currentID)
end

и это / and this
 

local vehicleSirens = {
    ["new_car"] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }},
    [409] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }}
}

function setSomeCoolThingsForVehicle(vehicle)
  	local model = getElementData(vehicle, "newModelName") or getElementModel(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

 

Link to comment
12 hours ago, AngelAlpha said:
local modelTable = newModelsTable[newModelName]
if modelTable then
  if modelTable.currentID == nil then
    modelTable.currentID = engineRequestModel("vehicle", modelTable.parentID)
    local txd = engineLoadTXD("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".txd")
    engineImportTXD(txd, modelTable.currentID)
    local dff = engineLoadDFF("added_models/"..modelTable.modelName.."/"..modelTable.modelName..".dff")
    engineReplaceModel(dff, modelTable.currentID)
  elseif getElementModel(source) == modelTable.currentID then
    return
  end
  setElementModel(source, modelTable.currentID)
  setElementData(source, "newModelName", newModelName)
  outputDebugString('Модели "'..modelTable.modelName..'" присвоен ID: ' ..modelTable.currentID)
end

и это / and this
 

local vehicleSirens = {
    ["new_car"] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }},
    [409] = {count = 2, sirens = {
        [1] = {x = -0.5, y = 1.5, z = 0.7, r = 255, g = 0, b = 0}, 
        [2] = {x = 0.5, y = 1.5, z = 0.7, r = 0, g = 0, b = 255}
    }}
}

function setSomeCoolThingsForVehicle(vehicle)
  	local model = getElementData(vehicle, "newModelName") or getElementModel(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

 

Во втором куске я просто пропустил часть кода, так как там ещё срабатывает пара штук, и модель, если она оригинальная, переопределяется там же. Как я уже писал, на стандартных работает хорошо, на заменённых - нет, но оно добавляется, так как звук есть.

В первом не совсем понял смысла дописывать ещё один setElementData, так как это происходит при спавне машины, и он уже есть. newModelName - это как раз оно, я просто тут тоже не весь код привёл, чтобы он не таким большим был, но забыл, что некоторые детали могут быть важны 🤣

Короче, все эти исправления, которые ты предложил, у меня уже есть, и оно всё равно не работает))

Link to comment
7 hours ago, DarkStalker30 said:

Во втором куске я просто пропустил часть кода, так как там ещё срабатывает пара штук, и модель, если она оригинальная, переопределяется там же. Как я уже писал, на стандартных работает хорошо, на заменённых - нет, но оно добавляется, так как звук есть.

В первом не совсем понял смысла дописывать ещё один setElementData, так как это происходит при спавне машины, и он уже есть. newModelName - это как раз оно, я просто тут тоже не весь код привёл, чтобы он не таким большим был, но забыл, что некоторые детали могут быть важны 🤣

Короче, все эти исправления, которые ты предложил, у меня уже есть, и оно всё равно не работает))

function setSomeCoolThingsForVehicle(vehicle)
  	local model = getElementData(vehicle, "newModelName") or getElementModel(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

и то что в коде я дописал второй строкой у тебя тоже есть и все равно не работает?

Link to comment
15 hours ago, AngelAlpha said:
function setSomeCoolThingsForVehicle(vehicle)
  	local model = getElementData(vehicle, "newModelName") or getElementModel(vehicle)
    if vehicleSirens[model] then
        outputDebugString('adding sirens, model: '..model)
        addVehicleSirens(vehicle, vehicleSirens[model].count, 5, false, false, false)
        for number, siren in ipairs(vehicleSirens[model][sirens]) do
            setVehicleSirens(vehicle, number, siren.x, siren.y, siren.z, siren.r, siren.g, siren.b)
        end
    end
end

и то что в коде я дописал второй строкой у тебя тоже есть и все равно не работает?

Да.

10 hours ago, FernandoMTA said:

Sirens won't work on models added using enginerequestmodel.

 

Other features like dozer or tow truck also don't work. See bug report: https://github.com/multitheftauto/mtasa-blue/issues/1861

 

I have a lot of experience with these new model features. Feel free to ask.

I created this framework: 

https://github.com/Fernando-A-Rocha/mta-add-models/

Well, I assumed that.

Okay, if with sirens I can creating something new, did you find any another ways to script work for that models? Or it can work only on standard models (I read bugreport and find all I now right now about non-working models, but I have no idea how it can be fixed by MTA scripts)?

Thanks for framework, but I'm trying to do as much as possible by myself, because it's interesting for me in that way. And thanks for help!

Link to comment

You can make a custom "sirens" script with custom corona lights attached to vehicles. This will work regardless of the model.

 

As for the hardcoded vehicle features like truck/tow-truck attach, dozer, ZR350 popup headlights, etc, some of these don't have workarounds in MTA using Lua scripts, but others do. For example, you can code popup headlights using vehicle component position/rotation.

Good luck

  • Thanks 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...