Jump to content

Bug ao duplicar resource(painel DX)


Recommended Posts

Bom pessoal, fiz recentemente um painel de recrutamento, no qual o jogador pode criar um recrutamento em determinado local, dimensão, e teletransporte.

O sistema funcionou corretamente, porém, preciso duplicar esse recurso para que duas gangs possam usa-lo, e quando dupliquei os dois mods eles bugaram, como se eu estivesse usando dois painéis, por exemplo: quando crio um recrutamento através do painel do resource painelrecrutar_w ele cria o recrutamento nesse recurso e no outro(painelrecrutar), como criando dois teletransportes.
Já tive esse mesmo problema ao duplicar painéis, quando uso um parece que estou usando dois(o duplicado e original).

 

Alguém sabe como resolver esse problema?

Grato.

Link to post

Você provavelmente está usando os mesmos nomes de eventos e funções. Quando vc clica no botão de um painel, chama o mesmo evento nos dois painéis, duplicando tudo.

Troque todos os nomes dos eventos do segundo painel para diferenciá-lo do primeiro painel.

Link to post
On 04/11/2017 at 23:02, Lord Henry said:

Você provavelmente está usando os mesmos nomes de eventos e funções. Quando vc clica no botão de um painel, chama o mesmo evento nos dois painéis, duplicando tudo.

Troque todos os nomes dos eventos do segundo painel para diferenciá-lo do primeiro painel.

Grato pela sua rápida resposta e desculpe pela resposta demorada da minha parte.


Consegui resolver meu problema, porém me surge outra dúvida: já vi outras pessoas duplicarem painéis sem sequer trocar eventos, apenas copiando, colando e mudando o nome do recurso. Seria possível eu fazer isso? 

Link to post
17 hours ago, Citryon25 said:

outra dúvida: já vi outras pessoas duplicarem painéis sem sequer trocar eventos, apenas copiando, colando e mudando o nome do recurso. Seria possível eu fazer isso? 

Não. Os eventos vão duplicar e não vai dar certo. Tem que sempre mudar os nomes.

Edited by Lord Henry
Link to post

Na verdade é possível sim, usando resourceRoot como fonte do evento, assim o evento só poderá ser chamado pela resource atual, e não entrará em conflito com outras que possuem eventos com o mesmo nome.

Além disso, é recomendado pelo MTA usar resourceRoot como fonte do evento, para melhor desempenho do cliente.

Obs: resourceRoot é uma variável pré definida pelo MTA, ela retorna o elemento raiz do resource que está sendo executado, seria o mesmo que usar a função getResourceRootElement()

Link to post
2 hours ago, Banex said:

Na verdade é possível sim, usando resourceRoot como fonte do evento, assim o evento só poderá ser chamado pela resource atual, e não entrará em conflito com outras que possuem eventos com o mesmo nome.

Além disso, é recomendado pelo MTA usar resourceRoot como fonte do evento, para melhor desempenho do cliente.

Obs: resourceRoot é uma variável pré definida pelo MTA, ela retorna o elemento raiz do resource que está sendo executado, seria o mesmo que usar a função getResourceRootElement()

Interessante, mas se o cara usar addCommandHandler ou BindKey para as mesmas funções, irá duplicar sim pois os dois resources usam o mesmo comando para ativar seus eventos. A saída seria o cara criar alguma condição em cada resource, que no fim das contas acaba não sendo o Ctrl+C e Ctrl+V que ele quer fazer.

Link to post
addEvent(getResourceName(getThisResource())..":eventName", true)
addEventHandler(getResourceName(getThisResource())..":eventName", getRootElement(), ...)

A saída que eu encontrei e que uso até hoje sem problema algum é este acima. Simplesmente fazer o evento com o nome do recurso.

Link to post
On 04/11/2017 at 22:59, Citryon25 said:

O sistema funcionou corretamente, porém, preciso duplicar esse recurso para que duas gangs possam usa-lo, e quando dupliquei os dois mods eles bugaram, como se eu estivesse usando dois painéis, por exemplo

Acho que a melhor solução na verdade não é criar outro resource, você pode fazer funcionar com um só script pra mais de uma gang fazer o uso.

Quanto ao evento, você pode usar em vários scripts, mas precisa se certificar que nenhum evento irá afetar outro script desnecessariamente. Você pode usar localmente colocando resourceRoot como disse Banex ou com localPlayer.

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.

×
×
  • Create New...