Jump to content

Alterar CommandHandler via config


Recommended Posts

Como o próprio título sugere, gostaria de saber se é possível alterar commandHandler via arquivo de config.
Eu criei um sistema de expediente aonde o jogador  digita em um marker "/expedientesamu" e então começa seu expediente, porém se um cliente deseja alterar este comando para por exemplo "/expedientepolicia", existe alguma maneira de fazer por arquivo de config compartilhado ? pois meus scripts são criptografados.

Tentei da seguinte forma:
No arquivo config.lua coloquei
ComandoNome = expedientesamu

e no meu server.lua na parte do commandHandler deixei assim:


addCommandHandler(ComandoNome, função)

Porém não funciona como deveria, então minha pergunta é, no caso do commandHandler, como eu poderia fazer para conseguir alterar o comando a hora que quisesse por um arquivo de config ?

Link to post

@Rakashy a lógica está correta, mas talvez você não tenha feito corretamente.

O processo - ao meu ver - para fazer isso que você quer, seria da seguinte forma:

Spoiler

1) Criar o resource com os determinados arquivos.
spacer.png

2) No meta.xml declarar os arquivos do script. De preferência, na ordem, deixe o arquivo do tipo shared antes dos demais.
spacer.png

3) No restante dos arquivos, só fazer o trabalho lógico.

spacer.png              spacer.png

 

  • Thanks 1
Link to post
6 hours ago, KronoS Lettify said:

@Rakashy a lógica está correta, mas talvez você não tenha feito corretamente.

O processo - ao meu ver - para fazer isso que você quer, seria da seguinte forma:

  Hide contents

1) Criar o resource com os determinados arquivos.
spacer.png

2) No meta.xml declarar os arquivos do script. De preferência, na ordem, deixe o arquivo do tipo shared antes dos demais.
spacer.png

3) No restante dos arquivos, só fazer o trabalho lógico.

spacer.png              spacer.png

 

Então mano, eu faço exatamente assim, deixo os arquivos como shared, como eu disse no post, o arquivo de config já está compartilhado, porém não funciona no addCommandHandler... por isso recorri ao forum

Link to post
42 minutes ago, Rakashy said:

Então mano, eu faço exatamente assim, deixo os arquivos como shared, como eu disse no post, o arquivo de config já está compartilhado, porém não funciona no addCommandHandler... por isso recorri ao forum

Me mostra os arquivos que você tem no seu resource, e o seu meta.xml, por favor.

Link to post
Just now, KronoS Lettify said:

Me mostra os arquivos que você tem no seu resource, e o seu meta.xml, por favor.

Então mano, o erro foi meu... eu estava colocando assim "Comando = "comandosamu" "quando na verdade era "Comando = 'comandosamu' " com apenas 1 aspas.. Obrigado pela dica mesmo assim, ja dei um thnks ai

Link to post
Just now, Rakashy said:

Então mano, o erro foi meu... eu estava colocando assim "Comando = "comandosamu" "quando na verdade era "Comando = 'comandosamu' " com apenas 1 aspas.. Obrigado pela dica mesmo assim, ja dei um thnks ai

Não há diferença entre as áspas duplas e simples no MTA.

Link to post
Just now, KronoS Lettify said:

Não há diferença entre as áspas duplas e simples no MTA.

Bom, eu alterei as aspas duplas pra aspas simples e simplesmente funcionou kkk, não sei ao certo o motivo, mas n vou reclamar...

  • Like 1
Link to post
  • Other Languages Moderators

De nada adianta vc proteger seu resource se você deixa algum script dele desprotegido, no caso o seu config.lua. Os caras vão criar códigos para quebrar sua proteção dentro do seu config.lua, então prefira utilizar um XML onde só terão os valores a ser configurados em vez de códigos.

No caso, crie um config.xml

Link to post
On 08/04/2021 at 13:21, Lord Henry said:

De nada adianta vc proteger seu resource se você deixa algum script dele desprotegido, no caso o seu config.lua. Os caras vão criar códigos para quebrar sua proteção dentro do seu config.lua, então prefira utilizar um XML onde só terão os valores a ser configurados em vez de códigos.

No caso, crie um config.xml

Disso eu não sabia cara, é possível quebrar a criptografia com o config ? Pode me explicar melhor sobre isso ?

Link to post
On 12/04/2021 at 16:20, Rakashy said:

E como eu poderia fazer este config.xml ? poderia me dar algum exemplo ?

Você pode configurar no próprio meta.xml.

<settings>
    <setting name="*command" value="abrir" />
</settings>

E lá no arquivo compilado (presumo que esteja), você busca pela informação das configurações com a função get, de acordo com o nome dela. No exemplo acima, é command.

local commandHandler = tostring(get("command"))

 

Link to post
  • Other Languages Moderators
On 12/04/2021 at 16:20, Rakashy said:

E como eu poderia fazer este config.xml ? poderia me dar algum exemplo ?

Exemplo de um config.xml:

<config version="2.0">                            <!-- É opcional ter parâmetros aqui. O nó principal não precisa ter o mesmo nome do arquivo.xml -->
    <info>Nó com parâmetro único.</info>    
    <setting name="Nome qualquer" value="0"/>         <!-- Nó com múltiplos parâmetros. -->
    <setting name="Outra configuração" value="true"/>
</config>

Como declarar este arquivo no meta.xml:

<config src="config.xml" type="client"/> <!-- O tipo pode ser "client" ou "server". Não existe tipo "shared" -->

Como obter os valores do config.xml no script:

local configs = {} -- Uma table vazia que será usada para armazenar os valores das configurações no script, para não ser necessário ficar obtendo novamente do XML o tempo todo.

addCommandHandler ("eae", function (cmd) -- Comando para ativar isso: /eae
    local rootNode = getResourceConfig ("config.xml") -- Obtém o nó principal do XML.
    local subNodes = xmlNodeGetChildren (rootNode) -- Obtém todos os nós que estão dentro do nó principal. No caso é o nó info e os nós setting.
    
    configs["version"] = xmlNodeGetAttribute(rootNode, "version") -- Obtém o valor do parâmetro version que está junto do nó principal.
    configs["information"] = xmlNodeGetValue (subNodes[0]) -- Obtém o valor do primeiro nó que está dentro do nó principal do XML, no caso o valor do nó info. Essa função só funciona para nós de atributo único. Se o nó tiver vários atributos, faça como abaixo.
    configs["conf01"] = { -- Você pode obter todos os parâmetros da configuração se achar necessário, incluindo o name dela.
        ["nome"] = xmlNodeGetAttribute(subNodes[1], "name") -- Obtém o parâmetro name do nó setting que vem logo abaixo do nó info.
        ["valor"] = xmlNodeGetAttribute(subNodes[1], "value") -- Mesma coisa só que com o parâmetro value.
    }
    configs["Outra configuração"] = xmlNodeGetAttribute(subNodes[2], "value") -- Se quiser ignorar o nome da configuração do XML, vc pode obter o value direto e declarar o nome no próprio script.
    
    outputChatBox ("Version: "..configs["version"])  -- Mostra no chat o valor de configs["version"]
    outputChatBox ("Info: "..configs["information"]) -- O mesmo com configs["information"]
    outputChatBox (configs["conf01"]["nome"]..": "..configs["conf01"]["valor"]) -- Mostra no chat o nome da primeira configuração seguido pelo seu valor.
    outputChatBox ("Outra configuração: "..configs["Outra configuração"]) -- Mostra no chat o valor da segunda configuração.
end)

 

  • Like 1
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...