Lord Henry

Como remover objetos não selecionáveis do mapa

Recommended Posts

Na verdade é bem simples por meio de código.
Vc só precisa saber o ID do objeto e informar uma coordenada bem próxima ao objeto, não precisa ser exatamente no centro do objeto.

Para descobrir o ID de um objeto que não é selecionável, dai é algo mais complexo que exige ferramentas externas. Para isso, vamos no site http://dev.prineside.com e clicamos no botão Model Search by Map Position.
Após selecionada a posição no mapa, ele vai mostrar todos os objetos (selecionáveis e não selecionáveis) em um raio de 500 metros, em ordem dos mais próximos para os mais distantes.
Na lista que aparecer, encontre o objeto que você deseja remover e anote o ID desse objeto.

Descobrimos o ID do objeto, e agora?
Agora já passou a parte mais difícil, o resto é programar um script básico de remoção de objetos por ID. Para isso vamos usar a função RemoveWorldModel.
Essa função é bem simples de se usar, basta informar o ID do objeto a ser removido, o raio cuja remoção será aplicada e as coordenadas do ponto onde vai começar a remoção.
Se você quiser restaurar o objeto quando o script for desligado, use RestoreWorldModel. Ideal para colocar em scripts de mapas, casas ou bases.
O script funciona tanto em server-side quanto em client-side, mas em geral utiliza-se server-side.

O Script deve ficar como esse:

function removeBagulho ()
    removeWorldModel (5681, 15, 1911.3, -1776.25, 13.38) --Remove o objeto do lava-jato próximo ao posto de LS quando o resource é iniciado.
end
addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), removeBagulho)

function restauraBagulho ()
    restoreWorldModel (5681, 15, 1911.3, -1776.25, 13.38) --Restaura o objeto quando o resource é desativado.
end
addEventHandler ("onResourceStop", getResourceRootElement(getThisResource()), restauraBagulho)

Esse script vc adiciona junto com o resource do seu mapa. Você pode optar por deixar isso em um script separado ou deixar junto com algum script que vc já tenha no seu mapa por exemplo scripts de portões, server-side.

Vlw, flw.
Deixe seu LIKE se ajudou você.
Dúvidas comente abaixo.

Spoiler

Obs: Nem todos os objetos podem ser removidos com essa função, por exemplo aquelas plantas do deserto que se você bater com veículo elas podem quebrar. Isso ocorre por bug apenas. Infelizmente também não podem ser removidas no Map Editor, apesar de ser possível selecioná-las. A única saída seria criar outro script que altere a textura e a colisão dessas arvores, mas isso já exige conhecimento avançado com arquivos TXD e DFF. Tanto que se você tentar procurar o ID dessas árvores seguindo os passos acima, vai perceber que o site não encontra essas árvores na pesquisa.

 

Edited by Lord Henry
Erro de formatação.
  • Like 3
  • Thanks 1

Share this post


Link to post
On 12/04/2017 at 12:56, Lord Henry said:

Na verdade é bem simples por meio de código.
Vc só precisa saber o ID do objeto e informar uma coordenada bem próxima ao objeto, não precisa ser exatamente no centro do objeto.

Para descobrir o ID de um objeto que não é selecionável, dai é algo mais complexo que exige ferramentas externas. Para isso, vamos no site http://dev.prineside.com e clicamos no botão Model Search by Map Position.
Após selecionada a posição no mapa, ele vai mostrar todos os objetos (selecionáveis e não selecionáveis) em um raio de 500 metros, em ordem dos mais próximos para os mais distantes.
Na lista que aparecer, encontre o objeto que você deseja remover e anote o ID desse objeto.

Descobrimos o ID do objeto, e agora?
Agora já passou a parte mais difícil, o resto é programar um script básico de remoção de objetos por ID. Para isso vamos usar a função RemoveWorldModel.
Essa função é bem simples de se usar, basta informar o ID do objeto a ser removido, o raio cuja remoção será aplicada e as coordenadas do ponto onde vai começar a remoção.
Se você quiser restaurar o objeto quando o script for desligado, use RestoreWorldModel. Ideal para colocar em scripts de mapas, casas ou bases.
O script funciona tanto em server-side quanto em client-side, mas em geral utiliza-se server-side.

O Script deve ficar como esse:


function removeBagulho ()
    removeWorldModel (5681, 15, 1911.3, -1776.25, 13.38) --Remove o objeto do lava-jato próximo ao posto de LS quando o resource é iniciado.
end
addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), removeBagulho)

function restauraBagulho ()
    restoreWorldModel (5681, 15, 1911.3, -1776.25, 13.38) --Restaura o objeto quando o resource é desativado.
end
addEventHandler ("onResourceStop", getResourceRootElement(getThisResource()), restauraBagulho)

Esse script vc adiciona junto com o resource do seu mapa. Você pode optar por deixar isso em um script separado ou deixar junto com algum script que vc já tenha no seu mapa por exemplo scripts de portões, server-side.

Vlw, flw.
Deixe seu LIKE se ajudou você.
Dúvidas comente abaixo.

  Reveal hidden contents

Obs: Nem todos os objetos podem ser removidos com essa função, por exemplo aquelas plantas do deserto que se você bater com veículo elas podem quebrar. Isso ocorre por bug apenas. Infelizmente também não podem ser removidas no Map Editor, apesar de ser possível selecioná-las. A única saída seria criar outro script que altere a textura e a colisão dessas arvores, mas isso já exige conhecimento avançado com arquivos TXD e DFF. Tanto que se você tentar procurar o ID dessas árvores seguindo os passos acima, vai perceber que o site não encontra essas árvores na pesquisa.

 

o numero 15 serve exatamente para o que ?

  • Like 1

Share this post


Link to post
9 minutes ago, SchmidtNeO said:

o numero 15 serve exatamente para o que ?

  • radius: A floating point number representing the radius that will be eliminated.

Como foi citado no tópico é o raio de onde a remoção sera aplicada, ele usou 15, mas você pode usar, 30, 50, 100, enfim.

  • Like 1

Share this post


Link to post
Posted (edited)
8 minutes ago, Jonas^ said:
  • radius: A floating point number representing the radius that will be eliminated.

Como foi citado no tópico é o raio de onde a remoção sera aplicada, ele usou 15, mas você pode usar, 30, 50, 100, enfim.

sim, fiz tudo corretamente mas não removeu, eu queria remover aquelas bandeiras que ficam na frente da prefeitura.

https://imgur.com/a/2G2X5B2

 

Edited by SchmidtNeO

Share this post


Link to post
Posted (edited)
4 hours ago, SchmidtNeO said:

tentei de várias formas mas n deu, poderia ver se o meta e o client está certo Lord  https://imgur.com/a/2G2X5B2

Está errado, coloque server no meta em type="server" ao invés de client.

onResouceStart/Stop são eventos server-side e não client-side.

Edited by Jonas^
  • Thanks 1

Share this post


Link to post
4 hours ago, Jonas^ said:

Está errado, coloque server no meta em type="server" ao invés de client.

onResouceStart/Stop são eventos server-side e não client-side.

Eu fiz isto jonas e mesmo assim não deu certo

  • Like 1

Share this post


Link to post
11 hours ago, SchmidtNeO said:

Eu fiz isto jonas e mesmo assim não deu certo

Crie um tópico (em Programação em Lua) e detalha o seu problema lá, mostre o código, etc.

  • Like 1

Share this post


Link to post

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.